53

软件开发中的10条最佳指导原则

 6 years ago
source link: http://www.cocoachina.com/programmer/20180612/23775.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

NJr6FbM.jpg!web

1. 遵循单一职责原则

函数是程序员的工具中最重要的抽象形式。它们能更多地被重复使用,你需要编写的代码就越少,代码也因此变得更可靠。较小的函数遵循单一职责原则更有可能被重复使用。

2. 尽量减少共享状态

你应该尽量减少函数之间的隐式共享状态,无论它是文件作用域的变量还是对象的成员字段,这有利于明确要求把值作为参数。当能明确地显示函数需要什么才可以产生所需的结果时,代码会变得更容易理解和重用。

对此的一个推论是,在一个对象中,相对于成员变量,你更应该优先选择静态的无状态变量 (static stateless variables)。

3. 将“副作用”局部

理想的副作用(例如:打印到控制台、日志记录、更改全局状态、文件系统操作等)应该被放置到单独的模块中,而不是散布在整个代码里面。函数中的一些“副作用”功能往往违反了单一职责原则。

4. 优先使用不变的对象

如果一个对象的状态在其构造函数中仅被设置一次,并且从不再次更改,则调试会变得更加容易,因为只要构造正确就能保持有效。这也是降低软件项目复杂性的最简单方法之一。

5. 接口高于类

接收接口的函数(或 C++ 中的模板参数和概念)比在类上运行的函数更具可重用性。

6. 对模块应用良好的原则

寻找机会将软件项目分解成更小的模块(例如库和应用程序),以促进模块级别的重用。对于模块,应该遵循的一些关键原则是:

  1. 尽可能减少依赖

  2. 每个项目应该有一个明确的职责

  3. 不要重复自身

你应该努力使你的项目保持小巧和明确。

7. 避免继承

在面向对象编程中,继承 —— 特别是和虚拟函数结合使用时,在可重用性方面往往是一条死胡同。我很少有成功的使用或编写重载类的库的经历。

8. 将测试作为设计和开发的一部分

我不是测试驱动开发的坚定分子,但开始编码时先编写测试代码会使得代码十分自然地遵循许多指导原则。这也有助于尽早发现错误。不过要注意避免编写无用的测试,良好的编码实践意味着更高级别的测试(例如单元测试中的集成测试或特征测试)在揭示缺陷方面更有效。

9. 优先使用标准的库

我经常看到更好版本的 std::vector或 std::string ,但这几乎总是浪费时间和精力。一个明显的事实是 —— 你正在为一个新的地方引入 bug,其他开发者也不太可能重用你的代码,因为没有被广泛理解、支持和测试。

10. 避免编写新的代码

这是每个程序员都应遵循的最重要的教诲:最好的代码就是还没写的代码。你写的代码越多,你将遇到的问题就越多,查找和修复错误就越困难。

在写一行代码之前先问一问自己,有没有一个工具、函数或者库已经实现了你所需要的功能?你真的需要自己实现这个功能,而不是调用一个已经存在的功能吗?

写在最后的话

我发现编程是一门与学习艺术或运动非常相似的技能,你通过刻意的练习和从别人的经验中学习会得到更好的结果。不断提升你产出的代码质量有助于你成为更优秀的程序员。


Recommend

  • 23
    • www.woshipm.com 5 years ago
    • Cache

    导航设计的15个UX指导原则

    摘要:移动和PC用户都习惯于通过导航菜单探索网站内容及特性。本文的15个UX指导原则可以让你的导航菜单更受用户青睐。 为用户导航是每一位网站和app设计者的首要职责。毕竟用户一旦迷路,再炫酷的动效、再有趣的内容也都毫无意义。即使我们的网站中有搜索功能,也...

  • 14

    技术群讨论指导原则¶ 在一年多以前, 为了更好地与其他使用 Redis 的朋友进行互动, 我创建了一个以 Redis 为主题的 QQ 群。 随着大家的不断加入, 这个 QQ 群最近已经越来越接近...

  • 7

    打造杰出软件开发团队的12条指导建议陶文problem solverI. 技术模块切分要以业务组织...

  • 3

    糖尿病系列: 2型糖尿病人运动指导原则 本文是2013年间开微信公众号”糖尿病饮食”时所写的文章,不忍丢弃,所以归档到博客之中。 在阅读正文之前,你需要熟悉以下几个名词。 胰岛素敏感性?...

  • 7

    金色早报 | G7金融领导人就CBDC指导13项原则已达成一致立场头条▌G7金融领导人就CBDC指导13项原则已达成一致立场10月23日消息,根据美国财政部的...

  • 12

    Norman Kerth 在《Project Retrospectives》一书中曾提到回顾会议的primary directive principles: Regardless of what we discover, we understand and truly believe that everyone did the best job they could, given what they knew...

  • 4
    • chen-tao.github.io 2 years ago
    • Cache

    写给工程师的10条精进原则

    来自美团的一篇文章,我做了一些删减,focus很重要,找到自己的定位,多参与,形成方法论,逐步的向上靠近。 原则一:Owner意识“Owner意识”主要体现在两个层面:一是认真负责的态度,二是积极主...

  • 4

    开源治理的基本实践与指导原则 精选 原创 SEAL安全 2022-09-01 15:17:09...

  • 6
    • www.51cto.com 2 years ago
    • Cache

    物联网安全五项指导原则

    物联网安全五项指导原则 2022-09-07 14:44:55 物联网是传统IT和网络安全人员的新世界。他们目前的专业知识可以通过多种方式应用于这场新的物联网革命,但他们也必须面对一些新的挑战。

  • 9

    大牛架构师珍藏的10条编程原则 作者:钱魏Way 2022-12-25 12:43:22 本文内容梳理自StactOverflow的一个问题:编程时你最先考虑的准则是什么? 程序员拥有一个较好的编程原则能使他的编程能力有大幅的提升...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK