# java-sml-tm **Repository Path**: geekdoc0/java-sml-tm ## Basic Information - **Project Name**: java-sml-tm - **Description**: 面向团队的 Java 代码异味指南 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-05 - **Last Updated**: 2026-01-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 面向团队的 Java 代码异味指南 # 介绍 ## 这是什么? 这本书试图捕捉*"好"*的 Java 代码是什么样子以及有助于产生它的实践。 这是一份有问题的文档。 什么是好代码并没有一个正确答案,有许多备受尊敬的书籍都达到了同样的目的,比如*Effective Java*、*Clean Code*等。 那么为什么有这份文档呢? 它通过以下方式区别于其他: + 可自由分发 + 开放更新 - 鼓励贡献、纠正和更新 + 简短 - 为了易于消化,许多内容被省略 + 狭窄 - 它捕捉了一个特定上下文中*"好"*的观点 最后一点很重要。 我们对你和你所工作的环境做出了一些假设。 + 我们假设你正在*小型*团队中编写服务器端 Java。 + 我们假设你的团队经验参差不齐(一些专家,一些初学者)。 + 我们假设你在一般的"商业"环境中编写代码。 + 我们假设你希望代码在五年后仍然在使用中。 一些建议在其他情境下可能有效,而另一些可能对那些情境构成糟糕的建议。 它也只是众多有效替代方案中的一个观点。为了有用,它需要成为你可以同意并签署的观点。如果你对本书中的某些内容持不同意见,请表明你自己的想法,以便改进。 最后,我们所处理的代码并非都是完美的。有时我们继承了自己的错误,有时我们继承了别人的错误。 这份文档的目的不是说所有代码都必须看起来像这样,而是要有一个我们共同努力的目标。 ## 这是为谁准备的? 这份文档旨在供所有涉及编写服务器端 Java 代码的人消费。从第一次编写 Java 的开发人员到为多个团队提供服务的经验丰富的技术负责人。 一些部分对某些读者可能更相关,但我们鼓励每个人至少浏览所有部分,即使你不深入阅读。 ## 结构 该文档分为五个部分: + 过程 - 讨论开发哲学和工作流程 + 风格 - 高层次的良好风格和设计 + 具体内容 - 关于 Java 语言特性和陷阱的更具体建议 + 良好的测试 - 如何编写良好的测试 + 不良建议 - 讨论一些常见的不良建议和模式 ## 版本 这本书经常更新。书籍的最新更改可以在[gitbook.com](https://ncrcoe.gitbooks.io/java-for-small-teams/content/)上在线查看。 版本发布可免费从[书籍网站](http://javabook.ncredinburgh.com)获取。 如果你正在阅读这本书的 PDF 或印刷本,发布版本将显示在封面内页。如果没有内页,则你正在阅读未发布版本的书籍。 ## 历史 本书的大部分内容最初是在[NCR Edinburgh](http://ncredinburgh.com)的内部 wiki 页面上创建的。我们于 2015 年底开始将 wiki 转换为这本书,以便可以轻松地与公司的其他部门共享。 我们决定将此内部文档公开给所有人,希望我们共同努力使其更好。 ## 关于权衡 在软件工程中没有正确的答案。 这是一个权衡的行为,在这个过程中我们必须权衡一个关注点和另一个关注点,并对我们所处情境下哪个平衡对于特定场景更好做出判断。 我们见过经验丰富的程序员最常见的错误之一是盲目考虑只有一个或两个关注点(通常是带有响亮缩写的关注点),而不考虑其他因素。 我们已经仔细说明了我们认为本书建议适用的背景,但是背景仍然非常广泛。稍有不同的情况可能会因权衡不同而受益。在一个项目中对你有效的方法可能在下一个项目中效果不佳。 因此,我们很少使用像*总是*或*从不*这样的词语。 我们在使用它们之前已经认真考虑过,但我们真正的意思几乎总是或几乎从不。 话虽如此,如果你发现自己在折扣本书中的任何建议,请先停下来思考。不要陷入认为某些建议不适用于你的陷阱。当我们相信自己很优雅或很聪明时,我们常常犯下最糟糕的错误。我们的无能之处有时直到几个月甚至几年后才会显露出来。 建议是为了拯救我们自己而存在的。 ## 关于 Java 版本的说明 本文档旨在适用于 Java 7、8 和 9,但基本适用于 Java 5 和 6。 如果近期的 Java 版本有差异,我们会指出来。如果你不幸使用的是 Java 的早期版本,那么你就必须自己发现与 Java 7 的任何差异。 ## 许可证 本作品受版权© NCR 保护,但可以根据知识共享署名-相同方式共享 4.0 许可协议阅读和与他人分享。 ## 作者 本文档由[Henry Coles](https://twitter.com/0hjc)和众多贡献者编写。 ### 贡献者 + Francesco Burato + Gary Duprex + Grant Forrester + Kevin Grant + Keir Lawson + Marco Di Paola + Gordon Rogers + Herve Saint-Amand + Ewan Summers ## 封面 封面由彼得·贝里(Peter Berry)根据 1885 年的文本《新全球插图百科全书》中一幅长嘴鹬的木刻制作而成。 据我们所知,长嘴鹬并不特别擅长 Java。