为了保持代码的可维护性,是按照其他人的方式编写代码更好,还是使用算法更好呢?
为了保持代码的可维护性,是按照其他人的方式编写代码更好,还是使用算法更好呢?
正如爱因斯坦所说:
使一切尽可能简单,但不要过于简化。
这同样适用于代码和物理学。
凭借您的判断力 - 它是否更易于维护?通常通过将大量的if/else混乱转化为更简洁的形式,您可以消除其中不必要的情况,从而避免未来可能会出现的错误。当然,将一组清晰的条件转化为只有偶然起作用的布尔逻辑的晦涩曲折,可能会使事情变得更加难以维护,尤其是在某些情况下发生改变时。
编辑:
您提到的情况,如果公式能够工作,则可能是更好的选择-您甚至可以留下引用来源的评论。当然,也有可能公式以前存在,但被删除以便绕过某个特定的案例。这就是版本控制存储库中的注释应该起到帮助作用的地方。
由于还没有人发布链接,这里是他所指的PID算法的描述。
请记住,代码应该主要为人类所理解...编译器会负责让计算机理解。
"复杂"的级别可能有些棘手,但只要算法不需要数学博士解决,
我建议使用这些算法。请确保对算法名称进行适当的文档说明,可能还要提供算法如何工作的简短描述或指向相关文档的参考。
这将减少代码量,希望能提高应用程序的性能,并有望鼓励你周围的一些程序员学习新事物,并加入他们的技能库中。此外,总会有可能后来出现懂得这些内容的程序员。
优秀的引言....
任何傻瓜都能写出计算机能够理解的代码。优秀的程序员编写能够被人类理解的代码。
我无法相信有人认为150行的代码比20行的代码更简单。
采用20行代码,并按以下方式保护您的同事:
记录每个数据结构不变量和每个非平凡循环不变量。这些记录不是在注释中,而是在实际检查不变量的代码中进行。可以在生产过程中关闭检查。
如果在代码中使用数学公式或通过数学公式推导,则在注释(或静态字符串)中包含参考文献。最好包括两个参考文献:一个网络参考文献,在几秒钟内可能会得到;一个知名的教科书,可能会长期保持印刷状态并在大学图书馆中找到。
如果理解您的代码需要特殊的专业知识(如部分微分方程,物理学学位,伽罗瓦理论等),那么为了保护自己,您可能希望去找管理层并说“我有这种特殊的专业知识,可以编写更小(因此更快,更可靠和更易于维护)的代码,但当你不得不替换我时,你需要雇佣具有类似专业知识的人。你想让我怎么办?“如果您能告诉管理层这样的专业知识可以轻松地获得,那将是有帮助的。例如,许多拥有工程学位的人可以学习部分微分方程,但伽罗瓦理论家却很少。
附:以下是来自个人项目的示例注释,以便稍后调试自己的代码:
/*
* Compute the position of a point partially along the geodesic from
* pt1.lat,pt1.lon to pt2.lat,pt2.lon
*
* Ref: http://mathworld.wolfram.com/RotationFormula.html
*/