当前位置: 首页 > 科技观察

30多年软件经验,总结出写出更好代码的10个技巧

时间:2023-03-17 10:05:20 科技观察

30年软件经验,总结出10个最佳妙招。那么,如何敲出好的代码呢?好的代码可以定义为易于阅读、易于理解、易于调试、易于更改,最重要的是缺陷少。显然,编写好的代码需要花费很多时间,但从长远来看这是有意义的,因为您可以花更少的时间和精力来维护和重用您的代码。其实,我们可以把好的代码等同于可重用的代码,这就是下面要提到的重要原则之一。代码在编程工作中可能只是为了短期目标完成一个特定的功能,但是如果没有人(包括你自己)想要重用你的代码,那么这段代码在某种程度上可以说是不足和有缺陷的。要么太复杂,太具体,很可能在不同情况下崩溃,要么其他程序员可能不信任您的代码。无论您的经验水平如何,如果您始终如一地将以下技巧应用于您的代码(包括您的实验或原型),那么好的代码就在您的指尖。1.遵循单一职责原则函数是程序员库中最重要的抽象形式。重用的机会越多,您需要编写的代码就越少,代码就越可靠。遵循单一职责原则的小函数更有可能被重用。2.最小化共享状态函数之间的隐式共享状态应该最小化,无论是文件范围的变量还是对象的成员字段,这有利于显式传递所需的值作为参数。当很明显函数实现了预期的结果时,代码变得易于理解和重用。从中可以得出的一个结论是,您应该更喜欢静态无状态变量而不是对象成员变量。3.本地化的副作用理想的副作用(例如打印到控制台、日志记录、改变全局状态、文件系统操作等)应该放在单独的模块中而不是分散在整个代码中。功能性副作用通常违反单一职责原则。4.首选不可变对象如果对象的状态在其构造函数中设置一次并且不再更改,调试就会变得容易得多,因为一旦正确构造它就会保持有效。这是降低软件项目复杂性的最简单方法之一。5.多用接口,少用接受接口的类(或C++中的模板参数或概念)比对类进行操作的函数具有更高的可重用性。6.将好的原则应用于模块将软件项目分解成更小的模块(例如库和应用程序)以实现模块化重用。模块的一些关键原则是:最小化依赖性每个项目都应该有一个明确定义的功能不要重复你应该努力保持你的项目小而明确。7、避免继承在面向对象编程中,继承,尤其是虚函数,在可重用性方面往往是一个死角。我在覆盖类的库方面收效甚微。8.测试以及设计和开发我不是测试驱动开发的忠实拥护者,但是当您开始编写测试代码时,编写测试自然会遵循许多准则。它还有助于更早地暴露错误。避免编写无用的测试,良好的编码意味着更高级别的测试(例如,单元测试中的集成测试或功能测试)更有效地揭示缺陷。9.宁愿手写标准库我不能告诉你需要多长时间才能看到更好的std::vector或std::string版本,但这几乎总是浪费时间和精力。除了您将错误引入新位置这一明显事实之外。(参见技巧10)与被广泛理解、支持和测试的代码相比,其他程序员不太可能重用您的代码。10.避免写新代码最重要的一点是每个程序员都应该遵循:“最好的代码是没有写的代码”(最好的代码是不需要重写的代码)。您拥有的代码越多,缺陷就越多,查找和修复错误也就越困难。在编写一行代码之前问问自己,是否有工具、函数或库已经可以满足您的需求?你真的需要自己实现这个功能,而不是调用另一个现有的功能吗?总结编程就像一种艺术形式或一项运动,只有通过不断的实践和不断的向他人学习,才能不断提高自己的代码质量,这将有助于你成为一个更有效率的程序员。