对什么说“不”程序员
学会说“不”是一个好的开端。编程
可是究竟是对什么说“不”,又是何时适合说“不”呢?测试
这的确是大多数程序员,甚至是那些高级程序员都很容易混淆的一个重点。编码
做为一名程序员,编写代码无疑是你职业中最重要的部分。在你的编程生涯中,你不可避免的地将会处理各类关于不一样类型代码的请求。而每一个请求均可能会迫使你作出一些艰难的决定。这些看上去一切正常,彷佛也没什么错。毕竟,这是全部人对你的指望:做为程序员就该编写代码。然而,这里有一个问题:你是否应该编写向你请求的全部代码?调试
这个问题给咱们引入了一个程序员所能学到最重要的技能:编译
知道何时不编码多是程序员所能学到最重要的技能。——《可读代码的艺术》效率
对上面这句话,我彻底赞成。这是为何呢?重构
编程是解决问题的一门艺术。所以,天然而然地,程序员成为了问题解决者。做为程序员,当咱们面前有一个新问题有待解决,或由于任何其余缘由须要咱们写出代码行时,咱们会由于使命感而感到兴奋。软件
有这种兴奋也是再正常不过的,毕竟咱们是程序员,咱们就是喜欢写代码。bug
然而,对编写代码这件事过于兴奋就会让咱们变得盲目。这种情绪会让咱们忽视了一些重要的事实,而这些事实可能致使更大的问题,让咱们在将来不得再也不去解决这些更严重的问题。
那么,咱们每每容易忽略哪些重要的事实呢?
你写的每一行代码都是:
必须被其余程序员阅读和理解的代码
必须被测试和调试的代码
会增长软件缺陷的代码
可能会在未来引入新 bug 的代码
正如 Rich Skrenta 所写的,代码是咱们的敌人:
代码可谓是邪恶的。代码会腐烂。代码须要按期维护。它们老是包含有待发现的 bug。而新特性的添加老是意味着旧代码必须进行调整。
代码量越大,bug 所能藏身的地方就越多,且 checkout 或编译代码所需的时间就越长,而新员工理解这个系统所须要的时间就越长。这还意味着,若是你须要重构代码,须要挪移更多东西。
此外,更多的代码一般意味着程序拥有更少的灵活性和更少的功能。这一点乍一看是违反直觉的,但确实不少时候,较之一个才华平庸的程序员所编写的冗长混乱的代码,一个简单优雅的解决方案能运行更快,且其功能会更通用。
代码都是由程序员编写的。因此编写更多的代码每每须要更多的程序员。而程序员之间的沟通成本是以 n²的速度增加的,而后,这些程序员写的全部代码都添加到系统,在扩大系统功能的同时,也会增长整个软件工程的运营成本。
我说的这些都是真的,难道不是吗?因此,那些用他们的生产效率和编程思惟来激励你的伟大程序员们,都是那些知道何时该说“不”,何时不编程的人。易于维护、持续寿命长、不断帮助用户实现功能的那种软件,应该不包含任何没必要要的代码行。
最好的代码实际上是没有代码,而最有效率的程序员知道何时不该该编码。