`

coding中要注意的细节

阅读更多

注意:下面这个清单里描述的事情并不是你绝对不能做的,它只是用量化的方法来让你知道编程上的这些做法将会产生的负面代价。

  这些费用是在代码审查时你将要付出的。

  不遵守编码风格

  费用: $0.02

  代码库中的程序编码风格一致虽然不是很重要,但值得你去遵守。

  在提交代码的说明信息上偷懒

  费用: $0.50

  这主要是为了以后的查找。请细读这篇代码提交说明信息指导(英文)。

  使用局部变量

  费用: $1.00

  大多数的局部变量都最好使用方法代替。注意:代码块参数除外。

  多于一行的方法

  费用: $1.50

  对多于一行代码的方法要保持高度警惕。

  超过5行的方法

  费用: $3.00

  一个方法应该只做一个事情。一个事情应该用不了5行代码就能完成。

  很长的类

  费用: $5.00

  根据童子军(Boy Scout)法则:同性恋应该被禁止。哦,不,是另外一条:尽量只留下你会用到的代码。当你遇到一个比较长的类时,花点功夫精简它们。

  使用魔幻数字

  费用: $7.00

  在代码中你只可以使用两个数字:0和1。其它的都应该用具有名字的常量代替。

  在条件判断中使用`||` 或 `&&`

  费用: $7.00

  当你发现有 `if foo && bar` 时,把它提取到一个方法里,用来说明`foo && bar` 究竟是什么意思。

  使用 case 或 switch 语句

  费用: $15

  一个swith语句基本上不是只做一个事情。它通常还会牵涉到其它类。

  传递布尔参数

  费用: $15

  依赖布尔参数的程序流转叫做控制耦合,这是一种完全不应该的高耦合。

  类名用Manager结尾

  费用: $30

  “Manager”是一个很含糊的词,传达不了任何意思。使用它,很有可能你的类承担了过多的责任。

  过度使用附加支持

  费用: $10/object created

  尽量简化你测试时需要的附加支持工具。如果能用临时对象代替,就避免使用数据库。

  测试中屏蔽某些功能

  费用: $10/屏蔽的方法

  如果你在测试Foo类,你就不应该屏蔽或短路Foo中的任何方法。你越想这样做,越说明你需要从Foo中把这些功能提炼出来放到其它地方。

  在数据库中观察集成测试效果

  费用: $20

  集成测试应该通过UI来验证。不要去窥探数据库。

  注释

  费用: $200/行

  一千个注释中顶多只有一条有合理存在的理由。其它的你应该改进代码,直到不需要注释。

  注释中包含 TODO 或 FIXME

  费用: $500/行

  我不在意代码分支中存在不多的TODO注释,但绝对不要把它们合并的代码库中。“FIXME”实际上是“fuck you”你的同事。

  无意义的命名

  费用: $50/代码审查者的疑惑

  一定要努力努力好好给代码命名。当系统有变化时及时修改、改进你的命名。当发现有更好的名称时,不要等待,立即换掉。

  静态方法或类方法

  费用: $50/个

  Ruby里的类方法具有可变全局状态。想办法重构它们。

  不必要的属性状态变化

  费用: $100/变化

  与其修改一个现有的记录,不如创建一个新的,或return一个。与其删除,不如做标记。Rich Hickey 对此有一些你值得一读的思考。

  一个类有多个职责

  费用: $200/额外职责

  一个类应该只有一个职责或目的。几乎没有人因为使得类太小而出错。鉴于此,你的类很可能太大。

  重复的代码

  费用: $500

  编程中几乎没有任何原则你必须遵守的,但避免代码重复是个例外。代码复制给维护造成困难,严重影响代码质量。

  重复的测试代码

  费用: $500

  测试代码并不是产品代码的次要附属物。它们的质量同等重要。更严重的:维护一个糟糕的测试套件代码可能会让你欲哭无泪。

  未经测试的代码

  费用: $1,000/行

  未经测试的代码自诞生之时起就成了负担。这样做很不专业。

  感谢Paul Graham先生的“On Lisp”,本文是受他的在某些函数上收税的想法而启发。

分享到:
评论

相关推荐

    coding 面试注意事项

    在coding面试中,展现你的思维过程和解决问题的能力至关重要。通过遵循这些步骤和关注点,可以提高面试的成功率,并向面试官证明你具备成为优秀开发者的潜力。记住,良好的沟通和组织能力同样重要,因为它们反映了你...

    Cracking the Coding Interview

    - **引言**:简要介绍了软件工程师面试的大致流程和注意事项。 - **背后的故事**:分享了作者撰写本书的一些经历和感悟。 - **各大公司面试特点**: - 微软面试 - 亚马逊面试 - 谷歌面试 - 苹果面试 - 雅虎面试...

    c coding standard

    在实现复杂算法或逻辑时,应添加注释解释其实现细节,帮助后续维护者理解其工作原理。 **4.6 TODO注释** TODO注释用于标记待完成的工作或已知的问题,应明确指出问题所在及解决的优先级。 #### 五、头文件 **5.1...

    HEVC Coding Tools and Specification

    HEVC,即高效视频编码(High Efficiency Video Coding),是一种先进的视频编解码标准,也称为H.265。它是继H.264或AVC(高级视频编码)之后,由国际电信联盟(ITU-T)视频编码专家小组(VCEG)和ISO/IEC动态图像...

    GNU Coding Standards

    ##### 6.3 手册结构细节 手册应该具有清晰的结构,包括目录、章节划分等内容。这样可以帮助读者快速找到所需的信息。 ##### 6.4 手册许可 GNU 手册通常遵循 GNU 自由文档许可证 (GNU Free Documentation License)...

    Alibaba Java Coding Guidelines 2.1.1

    《阿里巴巴Java编码规范2.1.1...以上仅是《阿里巴巴Java编码规范2.1.1》的部分要点,实际规范中还包含更多细节,如日志记录、枚举使用、序列化等方面的规定。开发者应结合具体项目需求和团队习惯,灵活应用并持续优化。

    1k_coding task

    在这个压缩包中,"1k_coding"可能是包含所有挑战细节、输入/输出示例、测试用例和可能的解决方案的文件或文件夹。为了深入理解这个任务,我们需要解压文件并查看其中的内容。一般来说,这样的任务可能会包含以下部分...

    Google Coding Style C++

    应注意使用平台无关的类型和避免依赖特定架构的细节。 ##### 18. 预处理器宏 (Preprocessor Macros) 预处理器宏可以帮助简化代码,但过度使用会导致代码难以理解和维护。尽量使用内联函数或模板来替代宏。 ##### ...

    C#/VB .NET Coding Guidelines

    受保护的方法和构造函数只能被派生类访问,这有助于隐藏实现细节。 #### 4.10 密封类使用规范 密封类不允许被继承,这对于防止意外覆盖基类的行为非常有用。 #### 4.11 值类型使用规范 值类型如结构体等,在设计时...

    Alibaba Java Coding Guidelines-1.0.5.zip

    《阿里巴巴Java开发规约》是阿里巴巴...以上只是规约的部分核心内容,实际的《阿里巴巴Java开发规约》中还有更多细节和最佳实践。通过遵循这些规约,开发者可以编写出更高质量、更易维护的代码,提升项目的整体品质。

    GNU Coding Standards.pdf

    3. **手册结构细节**:手册应包括简介、安装指南、用户指南和参考手册等部分,以便用户快速找到所需信息。 4. **手册许可**:手册应遵循与软件相同的自由软件许可,允许用户自由复制、修改和分发。 5. **手册致谢*...

    Toad Coding 与 VSS实现数据库对象的版本控制

    #### 三、具体实施细节 - **配置Toad Team Coding**: - 打开Toad Option对话框,设置Souce Control Provider。 - 通过Team Coding Status对话框,配置具体的参数,包括第三方Souce Control Provider的设置。 - ...

    A Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-like Systems

    ### 四、实施细节与注意事项 实施里德-所罗门编码的关键在于正确构造信息分散矩阵\(A\)。在James S. Plank的技术报告中指出,原论文中给出的\(A\)矩阵并不具备所需性质,因此需参考修正后的版本(CS-03-504)。此外...

    Coding Style Guide

    注意在编辑器中设置使制表符和空格可见。 ##### 3.2 空白符 - **缩进标准**:使用空格作为缩进的标准化尚未达成共识。不同开发者偏好不同的空格数量(如2个、4个或更多)。 - **推荐使用制表符**:制表符提供了更...

    Coding for Life - Battery Life That Is

    标题:"Coding for Life - Battery Life That Is" 描述:"本PDF讲解的是如何开始节能的安卓程序.及能耗比较." 标签:"安卓 耗电 节能 开发" 知识点: 一、电池预算与设备性能 在现代移动设备中,尤其是智能手机...

    Coding YouTube API VCL by Delphi

    【标题】"Coding YouTube API VCL by Delphi" 指的是使用Delphi编程语言创建一个基于VCL(Visual Component Library)的库,该库...这个库对于想要在Delphi应用中整合YouTube功能的开发者来说,无疑是一个宝贵的资源。

    Cracking the Coding Interview 5th-扫描版

    - **测试人员和软件开发工程师(SDETs)**:专门章节讲解了测试人员在面试中应注意的技术细节和软技能。 - **产品经理和项目经理**:对于非技术背景的求职者,提供了如何在技术环境中展示自己价值的方法。 - **初创...

Global site tag (gtag.js) - Google Analytics