<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/62572d2f60196e4b849ca885/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62572d2f60196e4b849ca885/bg1.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 x1 h2 y2 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h3 y3 ff2 fs1 fc0 sc0 ls0 ws0"><span class="fc3 sc0"> </span></div></div><div class="c x2 y4 w3 h4"><div class="t m0 x3 h2 y5 ff1 fs0 fc1 sc0 ls0 ws0"><span class="fc3 sc0"> </span></div></div><div class="c x2 y6 w3 h4"><div class="t m0 x3 h2 y5 ff1 fs0 fc1 sc0 ls0 ws0"><span class="fc3 sc0"> </span></div></div><div class="c x2 y7 w3 h5"><div class="t m0 x4 h6 y8 ff1 fs2 fc2 sc0 ls0 ws0"><span class="fc3 sc0"> </span></div></div><div class="c x2 y9 w3 h7"><div class="t m0 x3 h2 ya ff1 fs0 fc1 sc0 ls0 ws0"><span class="fc3 sc0"> </span></div></div><div class="c x5 y8 w4 h8"><div class="t m0 x6 h9 yb ff1 fs3 fc2 sc0 ls0 ws0"> </div></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62572d2f60196e4b849ca885/bg2.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 x7 ha yc ff3 fs1 fc4 sc0 ls0 ws0">前<span class="ff1"> <span class="_ _0"> </span></span>言<span class="ff1"> </span></div><div class="t m0 x8 h2 yd ff3 fs0 fc0 sc0 ls0 ws0">《<span class="ff1">Java<span class="_ _1"> </span></span>开发手册》是阿里巴巴集团技术团队的集<span class="_ _2"></span>体智慧结晶和经验总结,经历了多次大规模</div><div class="t m0 x1 h2 ye ff3 fs0 fc0 sc0 ls0 ws0">一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地</div><div class="t m0 x1 h2 yf ff3 fs0 fc0 sc0 ls0 ws0">整理成册。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,</div><div class="t m0 x1 h2 y10 ff3 fs0 fc0 sc0 ls0 ws0">其它维度的知识点也会影响到软件的最终交付质量。比如:数据库的表结构和索引设计缺陷可能带</div><div class="t m0 x1 h2 y11 ff3 fs0 fc0 sc0 ls0 ws0">来软件上的架构缺陷或性能风险;工程结构混乱导致后续维护艰难;没有鉴权的漏洞代码易被黑客</div><div class="t m0 x1 h2 y12 ff3 fs0 fc0 sc0 ls0 ws0">攻击等等。所以本手册以<span class="_"> </span><span class="ff1">Ja<span class="_ _3"></span>va<span class="_ _1"> </span></span>开发者为中心视<span class="_ _2"></span>角,划分为<span class="ff4">编程规约、异常日志、单元测试、安全规</span></div><div class="t m0 x1 h2 y13 ff4 fs0 fc0 sc0 ls0 ws0">约、<span class="ff5">MySQL<span class="_ _4"> </span></span>数据库、工程结构、设计规约<span class="ff3">七个维度,再根据内容特征,细分成若干二级子目录。</span></div><div class="t m0 x1 h2 y14 ff3 fs0 fc0 sc0 ls0 ws0">另外,依据约束力强弱及故障敏感性,规约依次分为强制、推荐、参考三大类。在延伸信息中,</div><div class="t m0 x1 h2 y15 ff3 fs0 fc0 sc0 ls0 ws0">“<span class="fc5">说明</span>”对规约做了适当扩展和解释;“<span class="fc6">正例</span>”提倡什么样的编码和实现方式;“<span class="fc7">反例</span>”说明需要</div><div class="t m0 x1 h2 y16 ff3 fs0 fc0 sc0 ls0 ws0">提防的雷区,以及真实的错误案例。<span class="ff1"> </span></div><div class="t m0 x9 h2 y17 ff3 fs0 fc0 sc0 ls0 ws0">手册的愿景是<span class="ff4">码出高效,码出质量</span>。现代软件架构的复杂性需要协同开发完成,如何高效地协</div><div class="t m0 x1 h2 y18 ff3 fs0 fc0 sc0 ls0 ws0">同呢?无规矩不成方圆,无规范难以协同,比如,制订交通法规表面上是要限制行车权,实际上是</div><div class="t m0 x1 h2 y19 ff3 fs0 fc0 sc0 ls0 ws0">保障公众的人身安全,试想如果没有限速,没有红绿灯,谁还敢上路行驶?对软件来说,适当的规</div><div class="t m0 x1 h2 y1a ff3 fs0 fc0 sc0 ls0 ws0">范和标准绝不是消灭代码内容的创造性、优雅性,而是限制过度个性化,以一种普遍认可的统一方</div><div class="t m0 x1 h2 y1b ff3 fs0 fc0 sc0 ls0 ws0">式一起做事,提升协作效率,降低沟通成本。代码的字里行间流淌的是软件系统的血液,质量的提</div><div class="t m0 x1 h2 y1c ff3 fs0 fc0 sc0 ls0 ws0">升是尽可能少踩坑,杜绝踩重复的坑,切实提升系统稳定性,码出质量。<span class="ff1"> </span></div><div class="t m0 x9 h2 y1d ff3 fs0 fc0 sc0 ls0 ws0">我们已经在<span class="_"> </span><span class="ff1 ls1">2017<span class="_ _4"> </span></span>杭州云栖大会上发布<span class="_ _3"></span>了配套的<span class="_ _1"> </span><span class="ff1 fc8">Java<span class="_ _1"> </span><span class="ff3">开发规约<span class="_"> </span></span>I<span class="ls2">DE<span class="_ _4"> </span></span><span class="ff3">插件<span class="fc9">,</span></span></span>阿里云效也集成了</div><div class="t m0 x1 h2 y1e ff3 fs0 fc0 sc0 ls0 ws0">代码规约扫描引擎。次年,发布<span class="_"> </span><span class="ff1">36<span class="_ _4"> </span></span>万字的配套详解图书<span class="ff4 fc9">《码出高效》<span class="ff3">,<span class="_ _3"></span>本书秉持“图胜于表,表胜</span></span></div><div class="t m0 x1 h2 y1f ff3 fs0 fc9 sc0 ls0 ws0">于言”的理念,深入浅出地将计算机基础、面向对象思想、<span class="ff1">JVM<span class="_ _4"> </span></span>探源、数据结构与集合、并发与多</div><div class="t m0 x1 h2 y20 ff3 fs0 fc9 sc0 ls0 ws0">线程、单元测试等知识客观、立体地呈现出来。紧扣学以致用、学以精进的目标,结合阿里巴巴实</div><div class="t m0 x1 h2 y21 ff3 fs0 fc9 sc0 ls0 ws0">践经验和故障案例,与底层源码解析融会贯通,娓娓道来。此书所得收入均捐赠公益事情,希望用</div><div class="t m0 x1 hb y22 ff3 fs0 fc9 sc0 ls0 ws0">技术情怀帮助更多的人。<span class="ff2 fs4 fc0"> </span></div></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62572d2f60196e4b849ca885/bg3.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 xa ha y23 ff3 fs1 fc1 sc0 ls0 ws0">目录<span class="ff1"> </span></div><div class="t m0 x1 h2 y24 ff3 fs0 fc0 sc0 ls0 ws0">前言<span class="ff1 fs5"> </span></div><div class="t m0 x1 h2 y25 ff3 fs0 fc0 sc0 ls0 ws0">一、编程规约<span class="ff1"> <span class="_ _5"></span><span class="ls3">...................................................................................................................................................<span class="ls0"> <span class="_ _6"></span>1<span class="fs5"> </span></span></span></span></div><div class="t m0 xb h2 y26 ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">一</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">命名风格</span> <span class="_ _5"></span><span class="ls3">......................................................................................................................................<span class="ls0"> <span class="_ _6"></span>1<span class="fs5"> </span></span></span></div><div class="t m0 xb h2 y27 ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">二</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">常量定义</span> <span class="_ _5"></span><span class="ls3">......................................................................................................................................<span class="ls0"> <span class="_ _6"></span>4<span class="fs5"> </span></span></span></div><div class="t m0 xb h2 y28 ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">三</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">代码格式</span> <span class="_ _5"></span><span class="ls3">......................................................................................................................................<span class="ls0"> <span class="_ _6"></span>5<span class="fs5"> </span></span></span></div><div class="t m0 xb h2 y29 ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">四</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ls4">OOP<span class="_ _4"> </span></span><span class="ff3">规约<span class="_ _3"></span></span> <span class="_ _5"></span><span class="ls3">....................................................................................................................................<span class="ls0"> <span class="_ _6"></span>7<span class="fs5"> </span></span></span></div><div class="t m0 xb h2 y2a ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">五</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">集合处理</span> <span class="_ _5"></span><span class="ls3">....................................................................................................................................<span class="ls1">11<span class="fs5 ls0"> </span></span></span></div><div class="t m0 xb h2 y2b ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">六</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">并发处理</span> <span class="_ _5"></span><span class="ls3">....................................................................................................................................<span class="ls1">14<span class="fs5 ls0"> </span></span></span></div><div class="t m0 xb h2 y2c ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">七</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">控制语句</span> <span class="_ _5"></span><span class="ls3">....................................................................................................................................<span class="ls1">18<span class="fs5 ls0"> </span></span></span></div><div class="t m0 xb h2 y2d ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">八</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">注释规约</span> <span class="_ _5"></span><span class="ls3">....................................................................................................................................<span class="ls1">21<span class="fs5 ls0"> </span></span></span></div><div class="t m0 xb h2 y2e ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">九</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">其它</span> <span class="_ _5"></span><span class="ls3">............................................................................................................................................<span class="ls1">22<span class="fs5 ls0"> </span></span></span></div><div class="t m0 x1 h2 y2f ff3 fs0 fc0 sc0 ls0 ws0">二、异常日志<span class="ff1"> <span class="_ _5"></span><span class="ls3">.................................................................................................................................................<span class="ls1">24<span class="fs5 ls0"> </span></span></span></span></div><div class="t m0 xb h2 y30 ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">一</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">异常处理</span> <span class="_ _5"></span><span class="ls3">....................................................................................................................................<span class="ls1">24<span class="fs5 ls0"> </span></span></span></div><div class="t m0 xb h2 y31 ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">二</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">日志规约</span> <span class="_ _5"></span><span class="ls3">....................................................................................................................................<span class="ls1">26<span class="fs5 ls0"> </span></span></span></div><div class="t m0 x1 h2 y32 ff3 fs0 fc0 sc0 ls0 ws0">三、单元测试<span class="ff1"> <span class="_ _5"></span><span class="ls3">.................................................................................................................................................<span class="ls1">28<span class="fs5 ls0"> </span></span></span></span></div><div class="t m0 x1 h2 y33 ff3 fs0 fc0 sc0 ls0 ws0">四、安全规约<span class="ff1"> <span class="_ _5"></span><span class="ls3">.................................................................................................................................................<span class="ls1">30<span class="fs5 ls0"> </span></span></span></span></div><div class="t m0 x1 h2 y34 ff3 fs0 fc0 sc0 ls0 ws0">五、<span class="ff1">MySQL<span class="_ _4"> </span></span>数据库<span class="ff1"> <span class="_ _8"></span><span class="ls3">.......................................................................................................................................<span class="ls1">31<span class="fs5 ls0"> </span></span></span></span></div><div class="t m0 xb h2 y35 ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">一</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">建表规约</span> <span class="_ _5"></span><span class="ls3">....................................................................................................................................<span class="ls1">31<span class="fs5 ls0"> </span></span></span></div><div class="t m0 xb h2 y36 ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">二</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">索引规约</span> <span class="_ _5"></span><span class="ls3">....................................................................................................................................<span class="ls1">32<span class="fs5 ls0"> </span></span></span></div><div class="t m0 xb h2 y37 ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">三</span>)<span class="fs5"> <span class="_ _7"> </span></span>SQL<span class="_ _4"> </span><span class="ff3">语句</span> <span class="_ _8"></span><span class="ls3">....................................................................................................................................<span class="ls1">34<span class="fs5 ls0"> </span></span></span></div><div class="t m0 xb h2 y38 ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">四</span>)<span class="fs5"> <span class="_ _7"> </span></span>ORM<span class="_ _4"> </span><span class="ff3">映射</span> <span class="_ _9"></span><span class="ls3">..................................................................................................................................<span class="ls1">35<span class="fs5 ls0"> </span></span></span></div><div class="t m0 x1 h2 y39 ff3 fs0 fc0 sc0 ls0 ws0">六、工程结构<span class="ff1"> <span class="_ _5"></span><span class="ls3">.................................................................................................................................................<span class="ls1">37<span class="fs5 ls0"> </span></span></span></span></div><div class="t m0 xb h2 y3a ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">一</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">应用分层</span> <span class="_ _5"></span><span class="ls3">....................................................................................................................................<span class="ls1">37<span class="fs5 ls0"> </span></span></span></div><div class="t m0 xb h2 y3b ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">二</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">二方库依赖</span> <span class="_ _5"></span><span class="ls3">................................................................................................................................<span class="ls1">38<span class="fs5 ls0"> </span></span></span></div><div class="t m0 xb h2 y3c ff1 fs0 fc0 sc0 ls0 ws0">(<span class="ff3">三</span>)<span class="fs5"> <span class="_ _7"> </span></span><span class="ff3">服务器</span> <span class="_ _5"></span><span class="ls3">........................................................................................................................................<span class="ls1">39<span class="fs5 ls0"> </span></span></span></div><div class="t m0 x1 h2 y3d ff3 fs0 fc0 sc0 ls0 ws0">七、设计规约<span class="ff1"> <span class="_ _5"></span><span class="ls3">.................................................................................................................................................<span class="ls1">41<span class="fs5 ls0"> </span></span></span></span></div><div class="t m0 x1 h2 y3e ff3 fs0 fc0 sc0 ls0 ws0">附<span class="_"> </span><span class="ff1">1</span>:版本历史<span class="ff1"> <span class="_ _a"></span><span class="ls3">..............................................................................................................................................<span class="ls1">43<span class="fs5 ls0"> </span></span></span></span></div><div class="t m0 x1 h2 y3f ff3 fs0 fc0 sc0 ls0 ws0">附<span class="_"> </span><span class="ff1">2</span>:专有名词解释<span class="ff1"> <span class="_ _a"></span><span class="ls3">......................................................................................................................................<span class="ls1">44<span class="fs5 ls0"> </span></span></span></span></div><div class="t m0 x1 h2 y40 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 xc hc y41 ff1 fs4 fc0 sc0 ls0 ws0"> </div><div class="t m0 xd h2 y42 ff3 fs0 fc0 sc0 ls0 ws0">(注:浏览时请使用<span class="_"> </span><span class="ff1 fs5 fc9">PDF<span class="_"> </span></span>左侧导航栏)<span class="ff1"> </span></div><div class="t m0 xc h2 y43 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 hc y44 ff2 fs4 fc0 sc0 ls0 ws0"> <span class="_ _b"> </span><span class="ff1"> </span></div></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62572d2f60196e4b849ca885/bg4.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 xe hd y45 ff6 fs6 fc0 sc0 ls0 ws0">Jav<span class="_ _2"></span>a<span class="_ _c"> </span><span class="ff7">开发手册<span class="_ _3"></span><span class="ff8"> </span></span></div><div class="t m0 xf he y46 ff9 fs6 fc0 sc0 ls5 ws0"> <span class="ls0">1<span class="ls6">/44</span> </span></div><div class="t m0 x1 h2 y2 ff1 fs0 fc0 sc0 ls0 ws0"> <span class="_ _d"> </span> </div><div class="t m0 x1 hf y47 ff3 fs7 fc0 sc0 ls0 ws0">一、<span class="ffa"> <span class="_ _4"></span></span>编程规约<span class="ff1"> </span></div><div class="t m0 x1 h10 y48 ff1 fs8 fc0 sc0 ls0 ws0">(<span class="ff3">一</span>)<span class="ffa"> <span class="_ _e"> </span><span class="ff3">命名风格</span></span> </div><div class="t m0 x10 h2 y49 ff1 fs0 fc0 sc0 ls1 ws0">1.<span class="ffa ls0"> <span class="_ _0"> </span><span class="ff3 fca">【强制】<span class="fc9">代码中的命名均不能以<span class="fc8">下划线或美元符号</span>开始,也不能以<span class="fc8">下划线或美元符号</span>结束。<span class="ff1"> </span></span></span></span></div><div class="t m0 x11 h11 y4a ff3 fs5 fcb sc0 ls0 ws0">反例:<span class="ff1 fcc">_name / __name / $name / name_ / name$ /<span class="_ _3"></span> name__<span class="fc0"> </span></span></div><div class="t m0 x10 h2 y4b ff1 fs0 fc9 sc0 ls1 ws0">2.<span class="ffa ls0"> <span class="_ _0"> </span><span class="ff3 fca">【强制】<span class="fc9">代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。<span class="ff1"> </span></span></span></span></div><div class="t m0 x11 h11 y4c ff3 fs5 fcd sc0 ls0 ws0">说明:<span class="fc9">正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,纯拼音命名方式更要避免采用。<span class="ff1"> </span></span></div><div class="t m0 x11 h11 y4d ff3 fs5 fce sc0 ls0 ws0">正例:<span class="ff1 fc9">renminbi / alibaba / <span class="_ _2"></span>taobao / youku / hangzhou <span class="_ _f"> </span><span class="ff3">等国际通用的名称,可视同英文。</span> </span></div><div class="t m0 x11 h11 y4e ff3 fs5 fcb sc0 ls0 ws0">反例:<span class="ff1 fc9">DaZhePromotion [<span class="ff3">打折</span>] / getPingfenByName() [<span class="ff3">评分</span>] / int <span class="_ _c"> </span><span class="ff3">某变量</span> <span class="_ _c"> </span>= 3 </span></div><div class="t m0 x10 h2 y4f ff1 fs0 fc9 sc0 ls1 ws0">3.<span class="ffa ls0"> <span class="_ _0"> </span><span class="ff3 fca">【强制】<span class="fc9">类名使用<span class="_"> </span><span class="ff1">UpperCamelCase<span class="_ _1"> </span></span>风格,但以下情形例外:<span class="ff1">DO / BO / DTO / VO / AO </span></span></span></span></div><div class="t m0 x11 h2 y50 ff1 fs0 fc9 sc0 ls0 ws0">/ PO / UID<span class="_ _4"> </span><span class="ff3">等。</span> </div><div class="t m0 x11 h11 y51 ff3 fs5 fce sc0 ls0 ws0">正例:<span class="ff1 fc9">JavaServerless<span class="_ _2"></span>Platform / UserDO / XmlServic<span class="_ _3"></span>e / TcpUdpDeal <span class="_ _2"></span>/ TaPro<span class="_ _3"></span>motion </span></div><div class="t m0 x11 h2 y52 ff3 fs5 fcb sc0 ls0 ws0">反例:<span class="ff1 fc9">javas<span class="_ _2"></span>erverlessplatform / UserDo / XMLService / TCPUDPDeal / TAPromot<span class="_ _3"></span>ion<span class="fs0"> </span></span></div><div class="t m0 x10 h2 y53 ff1 fs0 fc9 sc0 ls1 ws0">4.<span class="ffa ls0"> <span class="_ _0"> </span><span class="ff3 fca">【强制】<span class="fc9">方法名、参数名、成员变量、局部变量都统一使用<span class="_"> </span><span class="ff1">lo<span class="_ _3"></span>werCamelCase<span class="_ _4"> </span></span>风格,必须遵</span></span></span></div><div class="t m0 x11 h2 y54 ff3 fs0 fc9 sc0 ls0 ws0">从驼峰形式。<span class="ff1"> </span></div><div class="t m0 x11 h2 y55 ff3 fs5 fce sc0 ls0 ws0">正例:<span class="ff1 fc9"> localV<span class="_ _2"></span>alue / getHttpMessage() / inputUserId<span class="_ _3"></span><span class="fs0"> </span></span></div><div class="t m0 x10 h2 y56 ff1 fs0 fc9 sc0 ls1 ws0">5.<span class="ffa ls0"> <span class="_ _0"> </span><span class="ff3 fca">【强制】<span class="fc9">常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字</span></span></span></div><div class="t m0 x11 h2 y57 ff3 fs0 fc9 sc0 ls0 ws0">长。<span class="ff1"> </span></div><div class="t m0 x11 h11 y58 ff3 fs5 fce sc0 ls0 ws0">正例:<span class="ff1 fc9">MAX_STOCK_COUNT / <span class="_ _2"></span>CAC<span class="_ _3"></span>HE_EXPIRED_TI<span class="_ _2"></span>ME </span></div><div class="t m0 x11 h2 y59 ff3 fs5 fcb sc0 ls0 ws0">反例:<span class="ff1 fc9">MAX_COUNT / <span class="_ _2"></span>EXPIRED_TIME<span class="fs0"> </span></span></div><div class="t m0 x10 h2 y5a ff1 fs0 fc9 sc0 ls1 ws0">6.<span class="ffa ls0"> <span class="_ _0"> </span><span class="ff3 fca">【强制】<span class="fc9">抽象类命名使用<span class="_"> </span><span class="ff1">Abstract<span class="_ _1"> </span></span>或<span class="_"> </span><span class="ff1">Base<span class="_ _4"> </span></span>开头;异常类命名使用<span class="_"> </span><span class="ff1">Exception<span class="_ _1"> </span></span>结尾;测试类</span></span></span></div><div class="t m0 x11 h2 y5b ff3 fs0 fc9 sc0 ls0 ws0">命名以它要测试的类的名称开始,以<span class="_"> </span><span class="ff1">T<span class="_ _3"></span>est<span class="_ _4"> </span></span>结尾。<span class="ff1"> </span></div><div class="t m0 x10 h2 y5c ff1 fs0 fc9 sc0 ls1 ws0">7.<span class="ffa ls0"> <span class="_ _0"> </span><span class="ff3 fca">【强制】<span class="fcf">类型与中括号紧挨相连来表示数组。<span class="ff1"> </span></span></span></span></div><div class="t m0 x11 h11 y3f ff3 fs5 fce sc0 ls0 ws0">正例:<span class="fcf">定义整形数组<span class="_ _4"> </span><span class="ff1">int[] a<span class="_ _2"></span>rrayDemo; </span></span></div><div class="t m0 x11 h2 y5d ff3 fs5 fcb sc0 ls0 ws0">反例:<span class="fcf">在<span class="_"> </span><span class="ff1">main<span class="_"> </span></span>参数中,使用<span class="_"> </span><span class="ff1">String args[]</span>来定义。<span class="ff1 fs0 fc9"> </span></span></div><div class="t m0 x10 h2 y5e ff1 fs0 fc9 sc0 ls1 ws0">8.<span class="ffa ls0"> <span class="_ _0"> </span><span class="ff3 fca">【强制】</span><span class="ff1">POJO<span class="_ _f"> </span><span class="ff3">类中布尔类型变量都不要加<span class="_ _1"> </span></span><span class="ls7">is<span class="_ _4"> </span><span class="ff3 ls8">前缀<span class="ls0">,否则部分框架解析会引起序列化错误。</span></span></span></span></span></div><div class="t m0 x11 h11 y5f ff3 fs5 fcd sc0 ls0 ws0">说明:<span class="fcf">在本文<span class="_"> </span><span class="ffb">M<span class="_ _3"></span>ySQL<span class="_"> </span></span>规约中的建表约定第一条,表达是与否的值采用<span class="_ _f"> </span><span class="ffc ls9">is_xxx<span class="_ _1"> </span></span>的命名方式,所以,需要在</span></div><div class="t m0 x11 h2 y60 ffb fs5 fcf sc0 ls0 ws0"><resultMap><span class="_ _3"></span><span class="ff3">设置从<span class="_"> </span></span>is_xxx<span class="_ _f"> </span><span class="ff3">到<span class="_"> </span></span>xx<span class="_ _3"></span>x<span class="_"> </span><span class="ff3">的映射关系。<span class="ff1 fs0 fc9"> </span></span></div><div class="t m0 x11 h11 y61 ff3 fs5 fcb sc0 ls0 ws0">反例:<span class="fc9">定义为基本数据类型<span class="_ _4"> </span><span class="ff1">Boolean is<span class="_ _2"></span>Deleted<span class="_"> </span><span class="ff3">的属性<span class="_ _2"></span>,它的方法也是<span class="_"> </span><span class="ff1">isDeleted<span class="lsa">()</span></span>,<span class="ff1">RPC<span class="_ _4"> </span></span>框架在反向解</span></span></span></div><div class="t m0 x11 h11 y62 ff3 fs5 fc9 sc0 ls0 ws0">析的时候,“误以为”对应的属性名称是<span class="_ _4"> </span><span class="ff1">deleted</span>,导致属性获取不到,进而抛出异常。<span class="ff1"> </span></div></div><div class="c x12 y63 w5 h4"><div class="t m0 x13 h12 y64 ff3 fs6 fc9 sc0 ls0 ws0">版本号<span class="ff1"> </span></div></div><div class="c x14 y63 w6 h4"><div class="t m0 x15 h12 y64 ff3 fs6 fc9 sc0 ls0 ws0">制定团队<span class="ff1"> </span></div></div><div class="c xe y63 w7 h4"><div class="t m0 x16 h12 y64 ff3 fs6 fc9 sc0 ls0 ws0">更新日期<span class="ff1"> </span></div></div><div class="c x17 y63 w8 h4"><div class="t m0 x18 h12 y64 ff3 fs6 fc9 sc0 ls0 ws0">备注<span class="ff1"> </span></div></div><div class="c x12 y65 w5 h7"><div class="t m0 x19 h12 y66 ff1 fs6 fc9 sc0 ls0 ws0">1.5.0 </div></div><div class="c x14 y65 w6 h7"><div class="t m0 x1a h12 y66 ff3 fs6 fc9 sc0 ls0 ws0">阿里巴巴与<span class="_"> </span><span class="ff1">Java<span class="_ _c"> </span></span>社区开发者<span class="ff1"> </span></div></div><div class="c xe y65 w7 h7"><div class="t m0 x13 h12 y66 ff1 fs6 fc0 sc0 lsb ws0">201<span class="ls0">9.06.19 </span></div></div><div class="c x17 y65 w8 h7"><div class="t m0 x1b h12 y66 ff3 fs6 fc9 sc0 ls0 ws0">华山版,新增<span class="_"> </span><span class="ff1">21<span class="_ _c"> </span></span>条,修改描述<span class="_"> </span><span class="ff1">1<span class="lsb">12<span class="_"> </span></span></span>处<span class="ff1"> </span></div></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62572d2f60196e4b849ca885/bg5.jpg"><div class="c x0 y1 w2 h0"><div class="t m0 xe hd y45 ff6 fs6 fc0 sc0 ls0 ws0">Jav<span class="_ _2"></span>a<span class="_ _c"> </span><span class="ff7">开发手册<span class="_ _3"></span><span class="ff8"> </span></span></div><div class="t m0 xf he y46 ff9 fs6 fc0 sc0 ls5 ws0"> <span class="ls0">2<span class="ls6">/44</span> </span></div><div class="t m0 x10 h2 y2 ff1 fs0 fc9 sc0 ls1 ws0">9.<span class="ffa ls0"> <span class="_ _0"> </span><span class="ff3 fca">【强制】<span class="fc9">包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使</span></span></span></div><div class="t m0 x11 h2 y67 ff3 fs0 fc9 sc0 ls0 ws0">用<span class="fc8">单数</span>形式,但是类名如果有复数含义,类名可以使用复数形式。<span class="ff1 fs5"> </span></div><div class="t m0 x11 h11 y68 ff3 fs5 fce sc0 ls0 ws0">正例:<span class="fc9">应用工具类包名为<span class="_ _4"> </span><span class="ff1">com.a<span class="_ _2"></span>libaba.<span class="lsc">ai</span>.util<span class="ff3">、类名为<span class="_"> </span></span>MessageUtils<span class="ff3">(此规则参考<span class="_"> </span></span>spring<span class="_ _f"> </span><span class="ff3">的框架结构)<span class="_ _3"></span></span> </span></span></div><div class="t m0 x10 h2 y25 ff1 fs0 fcf sc0 ls1 ws0">10.<span class="ffa ls0"> <span class="_ _6"></span><span class="ff3 fca">【强制】<span class="fcf">避免在子父类的成员变量之间、或者不同代码块的局部变量之间采用完全相同的命</span></span></span></div><div class="t m0 x18 h2 y26 ff3 fs0 fcf sc0 ls0 ws0">名,使可读性降低。<span class="ff1"> </span></div><div class="t m0 x18 h11 y69 ff3 fs5 fcd sc0 ls0 ws0">说明:<span class="fcf">子类、父类成员变量名相同,即使是<span class="_ _4"> </span><span class="ff1">public<span class="_ _f"> </span></span>类型的变量也是能够通过编译,而局部变量在同一方法</span></div><div class="t m0 x18 h11 y6a ff3 fs5 fcf sc0 ls0 ws0">内的不同代码块中同名也是合法的,但是要避免使用。对于非<span class="_ _4"> </span><span class="ff1">setter/getter<span class="_ _f"> </span></span>的参数名称也要避免与成员</div><div class="t m0 x18 h11 y6b ff3 fs5 fcf sc0 ls0 ws0">变量名称相同。<span class="ff1"> </span></div><div class="t m0 x18 h2 y6c ff3 fs5 fcb sc0 ls0 ws0">反例:<span class="ff1 fs0 fcf"> </span></div><div class="t m0 x1c h12 y6d ff1 fs6 fc10 sc0 ls0 ws0">public<span class="fc0"> </span>cl<span class="_ _3"></span>ass<span class="fc0"> ConfusingName <span class="fc11">{</span> </span></div><div class="t m0 x1c h12 y6e ff1 fs6 fc0 sc0 lsd ws0"> <span class="fc10 ls0">public<span class="fc0"> <span class="_ _3"></span></span>int<span class="fc0"> age<span class="fc11">;</span> </span></span></div><div class="t m0 x1c h12 y6f ff1 fs6 fc6 sc0 lsd ws0"> <span class="lse">// <span class="_ _10"> </span><span class="ff3 ls0">非<span class="_"> </span><span class="ff1">setter/getter<span class="_ _c"> </span></span>的参数名称,不允许与本类成员变量同<span class="_ _3"></span>名<span class="ff1"> </span></span></span></div><div class="t m0 x1c h12 y70 ff1 fs6 fc0 sc0 lsd ws0"> <span class="fc10 ls0">public<span class="fc0"> <span class="_ _3"></span></span>void<span class="fc0"> <span class="fc12">getD<span class="_ _2"></span>ata<span class="fc11">(<span class="fc0">String alibaba<span class="_ _3"></span></span>)<span class="fc0"> </span>{<span class="fc0"> </span></span></span></span></span></div><div class="t m0 x1c h12 y71 ff1 fs6 fc0 sc0 lsd ws0"> <span class="fc10 ls2">if<span class="_ _2"></span><span class="fc11 ls0">(<span class="fc13">condition</span>)<span class="fc0"> </span>{<span class="fc0"> </span></span></span></div><div class="t m0 x1c h12 y72 ff1 fs6 fc0 sc0 lsd ws0"> <span class="fc10 ls0">final<span class="fc0"> </span>int<span class="fc0"> money <span class="fc14">=</span> <span class="fc13 lsb">531</span><span class="fc11">;</span> </span></span></div><div class="t m0 x1c h12 y73 ff1 fs6 fc0 sc0 lsd ws0"> <span class="fc6 lse">//<span class="ls0"> <span class="lsf">...</span><span class="fc0"> </span></span></span></div><div class="t m0 x1c h12 y74 ff1 fs6 fc0 sc0 lsd ws0"> <span class="fc11 ls0">}<span class="fc0"> </span></span></div><div class="t m0 x1c h12 y75 ff1 fs6 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1c h12 y76 ff1 fs6 fc0 sc0 lsd ws0"> <span class="fc10 ls0">for<span class="fc0"> <span class="fc11">(</span></span>int<span class="fc0"> i <span class="_ _3"></span><span class="fc14">=</span> <span class="fc13">0<span class="fc11">;</span></span> i <span class="fc14"><</span> <span class="fc13 lsb">10</span><span class="fc11">;</span> i<span class="fc14 ls10">++</span><span class="fc11">)<span class="_ _2"></span><span class="fc0"> <span class="fc11">{</span> </span></span></span></span></div><div class="t m0 x1c h12 y77 ff1 fs6 fc6 sc0 lsd ws0"> <span class="lse">// <span class="_ _10"> </span><span class="ff3 ls0">在同一方法体中,不允许与其它代码块中的<span class="_"> </span><span class="ff1">money<span class="_ _c"> </span></span>命名相同<span class="_ _3"></span><span class="ff1"> </span></span></span></div><div class="t m0 x1c h12 y78 ff1 fs6 fc0 sc0 lsd ws0"> <span class="fc10 ls0">final<span class="fc0"> </span>int<span class="fc0"> money <span class="fc14">=</span> <span class="fc13 lsb">615</span><span class="fc11">;</span> </span></span></div><div class="t m0 x1c h12 y79 ff1 fs6 fc0 sc0 lsd ws0"> <span class="fc6 lse">//<span class="ls0"> <span class="lsf">...</span><span class="fc0"> </span></span></span></div><div class="t m0 x1c h12 y7a ff1 fs6 fc0 sc0 lsd ws0"> <span class="fc11 ls0">}<span class="fc0"> </span></span></div><div class="t m0 x1c h12 y7b ff1 fs6 fc0 sc0 lsd ws0"> <span class="fc11 ls0">}<span class="fc0"> </span></span></div><div class="t m0 x1c h12 y7c ff1 fs6 fc11 sc0 ls0 ws0">}<span class="fc0"> </span></div><div class="t m0 x1c h12 y7d ff1 fs6 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1c h12 y7e ff1 fs6 fc10 sc0 ls0 ws0">class<span class="_ _3"></span><span class="fc0"> Son </span>ext<span class="_ _2"></span>ends<span class="fc0"> ConfusingName <span class="fc11">{</span> </span></div><div class="t m0 x1c h12 y7f ff1 fs6 fc6 sc0 lsd ws0"> <span class="lse">// <span class="_ _10"> </span><span class="ff3 ls0">不允许与父类的成员变量名称相同<span class="_ _3"></span><span class="ff1"> </span></span></span></div><div class="t m0 x1c h12 y80 ff1 fs6 fc0 sc0 lsd ws0"> <span class="fc10 ls0">public<span class="fc0"> <span class="_ _3"></span></span>int<span class="fc0"> age<span class="fc11">;</span> </span></span></div><div class="t m0 x1c h12 y81 ff1 fs6 fc11 sc0 ls0 ws0">}<span class="fc0"> </span></div><div class="t m0 x10 h2 y82 ff1 fs0 fc9 sc0 ls1 ws0">11.<span class="ffa ls0"> <span class="_ _6"></span><span class="ff3 fca">【强制】<span class="fc9">杜绝完全不规范的缩写,<span class="_ _3"></span>避免望文不知义。<span class="ff1"> </span></span></span></span></div><div class="t m0 x11 h11 y83 ff3 fs5 fcb sc0 ls0 ws0">反例:<span class="ff1 fc9">AbstractClass<span class="ff3">“缩写”命名成<span class="_"> </span></span>AbsClass<span class="ff3">;</span>condition<span class="_ _3"></span><span class="ff3">“缩写”命名成</span> <span class="_ _c"> </span>condi<span class="ff3">,此类随意缩写严重</span></span></div><div class="t m0 x11 h2 y84 ff3 fs5 fc9 sc0 ls0 ws0">降低了代码的可阅读性。<span class="ff1 fs0"> </span></div><div class="t m0 x10 h2 y85 ff1 fs0 fc9 sc0 ls1 ws0">12.<span class="ffa ls0"> <span class="_ _6"></span><span class="ff3 fc5">【推荐】<span class="fc9">为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词</span></span></span></div><div class="t m0 x11 h2 y86 ff3 fs0 fc9 sc0 ls0 ws0">组合来表达其意。<span class="ff1"> </span></div><div class="t m0 x11 h11 y87 ff3 fs5 fce sc0 ls0 ws0">正例:<span class="fcf">在<span class="_"> </span><span class="ff1">J<span class="_ _3"></span>DK<span class="_ _f"> </span></span>中,表达原子更新的类名为:<span class="ff1">AtomicReferenceFieldUpdater<span class="_ _3"></span></span>。<span class="ff1 fc9"> </span></span></div><div class="t m0 x11 h2 y88 ff3 fs5 fcb sc0 ls0 ws0">反例:<span class="ff1 fcf">int a<span class="_ _f"> </span><span class="ff3">的随意命名方式。</span><span class="fs0 fc9"> </span></span></div><div class="t m0 x10 h2 y89 ff1 fs0 fc9 sc0 ls1 ws0">13.<span class="ffa ls0"> <span class="_ _6"></span><span class="ff3 fc5">【推荐】<span class="fcf">在常量与变量的命名时,表示类型的名词放在词尾,以提升辨识度。<span class="_ _3"></span><span class="ff1"> </span></span></span></span></div><div class="t m0 x11 h11 y8a ff3 fs5 fce sc0 ls0 ws0">正例:<span class="ff1 fcf">startTime / <span class="_ _2"></span>workQueue / nameList / TERMINATED_THREAD_COUNT<span class="_ _3"></span> </span></div><div class="t m0 x11 h2 y8b ff3 fs5 fcb sc0 ls0 ws0">反例:<span class="ff1 fcf">startedAt / QueueOfWork / li<span class="_ _2"></span>stName / COUNT_TERMINATED_THREAD<span class="_ _3"></span><span class="fs0 fc9"> </span></span></div><div class="t m0 x10 h2 y8c ff1 fs0 fc9 sc0 ls1 ws0">14.<span class="ffa ls0"> <span class="_ _6"></span><span class="ff3 fc5">【推荐】<span class="fc9">如果模块、接口<span class="_ _3"></span>、类、方法使用了设计模式,在命名时需体现出具体模式。<span class="ff1"> </span></span></span></span></div><div class="t m0 x11 h11 y8d ff3 fs5 fcd sc0 ls0 ws0">说明:<span class="fc9">将设计模式体现在名字中,有利于阅读者快速理解架构设计理念。<span class="ff1"> </span></span></div></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>