这几年,编程的门槛变得越来越低了,
相关的软件开发知识也变得越来越普及,
似乎人人都可以写那么几段代码,这并不是什么难事。
然而,作为一门技巧,
编程初学者和经验丰富的匠人,还是有所不同的,
这不仅体现在最终结果上,还体现在对代码本身的看待方式上。
我们都知道,代码主要的作用是实现功能,
与他人合作的时候,代码还能起到沟通想法的作用。
因此,功能目标是重要的,实现方式是其次,
沟通的结果是重要的,沟通形式是其次。
本文打算对,代码如何实现功能的表现形式,进行探讨。
喜好
通常实现一段功能,我们可以用不止一种方式进行编程,
那么为什么最后我们选择了其中一种呢?
这是我们觉得代码有好坏之分。
代码能体现开发者的品味。
努力编写出一段看起来漂亮的代码,是一件好事,
但是这件事很容易做得适得其反,
因为好坏的评判标准是模糊的,某些方面也是因人而异的。
简而言之,我们认为好的,别人不一定认为好。
别人认为好的,我们也许不这么认为。
所以,虽然追求把代码写好是一种好习惯,
但是如果过于追求代码形式,就会浪费很多时间,
而且还不能达到预期的效果。
返工
很多人在写代码的时候,会持续不断的对它进行改动,
以便让代码在每时每刻都保持“优雅”。
我认为这是不必要的。
因为这在无形中增加了很多工作量。
而且我们这次的改动,未必不会在以后再被改回去。
我们应当认识到这是一种返工现象。
那么,如何才能避免最终代码脏乱差呢?
一个推荐的办法就是“写两遍”。
在个人开发过程中,我们可以随意发挥,先把功能做完,
然后在代码提交之前,重新阅读一下自己的代码,
最后一口气把它改好。
这样会减少大量的返工,还能保证最终的代码质量。
如果一次修改的代码量太大呢?
这说明我们一次提交的东西太多了,需要分多次提交,
每次提交“写两遍”。
重写
看到自己写的代码就非常喜欢,看到别人写的,就觉得很不舒服,
这是正常现象。
但是忍不住修改别人的代码,使他变成自己喜欢的方式,
这就不正常了。
这有几方面值得考虑,
首先,单纯修改代码的表现形式,价值并不明显,
也没有明显的证据表明,新代码比旧代码更好维护。
此外,代码一方面是实现功能,另一方面是沟通实现意图,
既然这两方面的目的都达成了,
就没有必要再修改其表现形式。
值得一提的是,不对现有代码进行充分了解就去修改,这种行为非常危险。
很容易出现故障,也不见得能比现有代码写的更好,
觉得脏乱差,很可能是现有代码需要照顾到的细节太多了,
我们脑海中的优雅代码,可能是暂时没考虑这些细节怎么处理。
最后,一个旧系统的现有代码量其实是很大的,
短时间内我们不可能将它完全改掉,这需要我们重写所有的业务逻辑,
因此,学会如何在现有代码的基础上工作,是开发者必备的一项技能。
所以,对现有代码,我们应该保持敬畏态度,
除非从业务上来看,有了巨大的修改,现有代码必须删掉重写,
否则,不要轻易重写它。
结语
希望本文能帮助对代码有洁癖的强迫症患者们,尽早摆脱纠结,
跳出代码形式的狭小领域范围,
早日避开写法问题。
况且,如果真要追求可读性和可维护性的话,
没有什么比当面讲解和丰富的文档更直接有效了,
从代码反推逻辑的话,再好的代码也无法还原当初的设计意图。
不要过于注重形式,要看意图,
需要达成什么目的,达到了没有,
还有哪些需要改进的,当前改进是否有成效。
我们已经在成效甚微的事情上浪费了太多时间,
是该放下包袱轻身前进了。