写代码最大的痛苦, 在于理解别人的代码
代码, 是把人的思维传递给计算机的工具, 所有的编程语言, 在设计时, 从没认真考虑过如何把一个人的思维传递给另一个人或者 2 个月后的编写者本人。
我们程序员不得不用一个工具, 强行去解决该工具设计时从没考虑到的问题, 这就是痛苦的根源。
编程是管理复杂度的工作, 复杂度分为问题本身需要的和工具本身带来的, 95%的编程工作, 后者的复杂度远远超过甚至碾压前者。
代码, 是把人的思维传递给计算机的工具, 所有的编程语言, 在设计时, 从没认真考虑过如何把一个人的思维传递给另一个人或者 2 个月后的编写者本人。
我们程序员不得不用一个工具, 强行去解决该工具设计时从没考虑到的问题, 这就是痛苦的根源。
编程是管理复杂度的工作, 复杂度分为问题本身需要的和工具本身带来的, 95%的编程工作, 后者的复杂度远远超过甚至碾压前者。
我同事,你为什么不写一个函数里面,也就一个功能,也不可能复用的,然后最后一句:几千行还好吧。
如果大家把代码当作给另一个程序员传递思想的工具,那么就不会有这个烦扰了。
有句话:代码是给人看的,顺便能在计算机上运行而已。
别人修改自己的代码:谁写的代码 太稀烂了
也希望大佬共通赐教。
从时效性看,文档(包括自动生成的)很难保持和代码的同步,注释稍微好一点,但也极度依赖于每个人自觉,只有能通过的测试才是永不过时的。所以文档适合描述比较稳定的公开接口。测试有和代码同步的时效性,而且粒度可以远比文档细,又不像注释那样难以规范和保证覆盖。
注释,代码风格 /规范,命名,review,linter,这些都是有效的辅助手段,但是我认为对于 maintainability 来说,最重要的就是测试。
有本书叫 working effectively with legacy code 可以看看。
但要做到以后能理解自己的代码还是能做到的:
1. 尽量用最高的标准要求自己的代码;
2. 不那么明显的工具函数会有简单的测试;
3. 不得不 HACK 的代码会用注释写明原因。
不夸张的说,我现在还能较容易地看懂我三年前写的代码。