返回 登录
0

写好代码的10个技巧

写好代码的10个技巧

原文:10 Tips for Writing Better Code
作者:Christopher Diggins
译者:Teixeira10

【译者注】在本文中,作者介绍了10个写好代码的建议,以自己切身编写代码的体会和经验来告诉开发者这10个建议的好处,并指导读者成为一个优秀而高效的程序员。
以下为译文:

那么怎样才可以使代码变得优秀呢?

好的代码可以被认为是易于阅读、理解、调试和修改的,而且最重要的是很少有缺陷。显然,编写良好的代码需要花费更多的时间,但从长期看会有更多的价值,因为维护和重用代码的成本会变的更低。

事实上,我们可以将好代码与可重用的代码等同起来,这是许多技巧背后的统一原则。作为一个开发特定功能的程序员,代码可能会实现你的短期目标,但是如果没有其他人想重用它的话(包括你自己),那么它一定是有缺点的,要么它太复杂,要么太具体,而且很可能在不同的情况下崩溃,从而导致其他程序员不相信这些代码。

我发现,尝试将下列最佳实践应用于你所编写的所有代码(包括你的实验和原型代码),可以让你写出更好的代码,而不用考虑你的经验水平。

1. 遵循单一责任原则

在程序员的代码库中,函数是最重要的抽象形式。可以重用的代码越多,编写的代码就越少,它们的可靠性也就越高。遵循单一责任原则的小功能代码就更有可能被重用。

2.最小化共享状态

你应该最小化函数之间的隐式共享状态,无论它是文件作用域变量还是对象的成员字段,都支持显式的值作为参数。当代码明确了该函数需要什么来产生期望的结果时,代码就变得更容易理解和重用。

这种情况下,你应该优先选择静态无状态变量,而不应该选择对象上的成员变量。

3.本地化的副作用

理想的副作用(例如:控制台打印、日志记录、改变全局状态、文件系统操作等等)应该放在单独的模块中,而不是分散在整个代码中。功能上的副作用常常违反单一责任原则。

4. 优先使用不可变对象

如果一个对象的状态在其构造函数中被设置一次,并且再也不会发生变化,那么调试就变得容易得多了,因为一旦构造正确,它仍然有效。这是减少软件项目复杂性的最简单方法之一。

5.多用接口少用类

使用接口(或在C++中使用模板参数或概念)的函数比在类上运行的函数更容易被重用。

6. 将好的原则应用于模块

寻找机会,将软件项目分解为更小的模块(例如:库和应用程序),以鼓励模块级的重用。模块的一些关键原则是:

1.依赖最小化  
2.每个项目都应该有一个明确的功能 
3.不要重复

你应该努力使你的项目小而明确。

7. 避免继承

在面向对象编程中,特别是在虚函数中,继承在可重用性方面往往是一个死死穴。我几乎没有成功地编写或使用那些能覆盖类的库。

8. 在设计和开发过程中进行测试

我并不是测试驱动开发的铁杆拥护者,但随着开始编写代码,测试代码会自然而然地遵循许多指导原则。它还可以帮助我们更早地发现很多错误。但是,要避免编写无用的测试代码,良好的编码意味着更高级别的测试(例如:集成测试或单元测试以及功能测试),而且在揭示缺陷方面更有效。

9.优先选择而不是手写标准库

我无法告诉你我多久才能见到一个std::vector 或std::string更好的声明,但这几乎总是浪费时间和精力的。除了显而易见的事实,你正在引入一个bug(参见技巧10),其他程序员不太可能重用你的代码,因为这不是那些被广泛理解、支持和测试的代码。

10. 避免编写新的代码

这是每个程序员都应该遵循的:“The best code is the code that isn’t written”(最好的代码是不用被复写的代码)。你拥有的代码行数越多,你的缺陷就越多,发现和修复bug的难度就越大。

在编写一行代码之前,问自己,是否有一个工具、函数或库已经完成了你所需要的工作?你真的需要那个功能而不是调用另一个已经存在的函数吗?

最后

编程是一种非常类似于学习的一种艺术形式或一种运动的技能,通过用心练习,不断地从别人那里学习,才会编写的更好。不断提高代码质量将有助于你成为一个更高效的程序员。

评论