半年前,JoelOnSoftware和CodingHorror合搞的stackoverflow.com刚上线不久,我兴冲冲地跑过去扔了一个问题:
你们认为编程的首要原则是什么?
作为我的学习原则的一个实践:
8. 学习一项知识,必须问自己三个重要问题:1. 它的本质是什么。2. 它的第一原则是什么。3. 它的知识结构是怎样的。
5个月过去了,这个问题到现在还有人回复,我得到了一大堆有意思的答案,忍不住翻译过来与大家分享:
1. 获得最多认同的答案:
KISS - Keep It Simple Stupid
DRY - Don't Repeat Yourself
一点不感到意外吧?
注:DRY原则倒是比较好理解和实践的。但KISS原则则是看上去直白,其实实践起来不那么容易的一个原则,因为simple和stupid的定义并不是每个人、在每个场景下都是一致且明显的,一个人的simple可能是另一个人的stupid,一个人的stupid可能是另一个人的unnecessary。一旦一个标准取决于具体场景,事情就不那么简单了。所以我们经常要说“It depends”。
2. 获得第二认同的答案:
写代码时时刻设想你就是将来要来维护这坨代码的人。
在这个答案后面有人添加到:
最好设想你的代码会被一个挥着斧头的精神病来维护。
有人接着又YY道:
而且这个挥着斧头的精神病还知道你住在哪儿。 (( 事实上后面有人指出这是 Martin Golding 的一句名言 ))
注:其实这个原则在设计API时也有用:
写API时时刻设想你就是要去使用这坨API的人。
3. 一些众所不一定周知的答案:
先弄清你的问题是什么!
弄清问题永远是问题解决过程中的第一步和最重要的一步。
代码只是工具,不是手段。
不知道怎么最好地解决你手头的问题(注:需求、架构、算法,技术选型,etc..),写上一万坨代码也是浪费比特。
知道什么时候不该编码。
(类似条目:YAGNI——“你并不需要编写这坨代码!”,针对你的需求编码,“写你所需”,别做“聪明事”,为一个不确定的未来编码。同时也注意模块化设计,以便能在未来新增需求时无痛扩充系统)
永远不要假定你已经了解一切了!
不作没有证据的推论。
想清楚了再编写。类似条目:如果方案在你脑子里面或者纸上不能工作,写成代码还是不能工作。
4. 一些众所很可能周知的答案:
越懒越好。
过早优化是一切罪恶的根源。
不要重新发明轮子。
测试通过前说什么“它可以工作”都是纯扯淡。
了解你的工具。
一切以用户需求为导向。
利用分治、抽象,解开子问题之间的耦合。
5. 最幽默的答案:
咖啡进,代码出。(Coffee in, Code out) (( 参见 Garbage in, Garbage
out. ))
最后,整个问题的 thread 在这里。
分享到:
相关推荐
Python编程语言能做什么软件?.docxPython编程语言能做什么软件?.docxPython编程语言能做什么软件?.docxPython编程语言能做什么软件?.docxPython编程语言能做什么软件?.docxPython编程语言能做什么软件?....
编程首要是要考虑程序的可行性,然后是可读性、可移植性、健壮性以及可测试性。这是总则。
如何学编程-学哪种工具??.pdf
java编程规范 编程原则 命名约定 MVC规范 其它规范
SP200S 编程器是伟纳电子继广受欢迎的SP180S 编程器基础上改进设计的一款编程器,直接使用 USB 接口通讯和供电,体积小巧,软件和硬件设计成熟,功能完善,是目前唯一一款拥有专业编程控制 软件的免费编程器。可以...
有哪些少儿编程相关的比赛或认证?-2019-08-28(B).pdf
Java并发编程设计原则和模式.pdf
华为规范化编程,很好的编程原则.pdf
Java并发编程设计原则与模式.pdf Doug Lea的大作
Java并发编程:设计原则与模式Java并发编程:设计原则与模式
Java并发编程:设计原则与模式(第二版)
什么是极端编程? 极端编程(eXtreme Programming)是一种开发纪律,以简单性、交流、反馈和勇气为基本宗旨。
什么是Java中的面向对象编程(OOP)?列举OOP的原则。...什么是Java中的并发编程?列举一些常见的并发类和工具。 什么是Java中的线程池?如何创建和使用线程池? 什么是Java中的Callable和Future接口?如何使
Java并发编程:设计原则与模式(第二版).pdf
中小学编程教学与Python编程语言教学:理念、原则与策略.pdf
到底该学哪种编程语言?哪些编程语言比较火?各种编程语言到底能干啥?
java并发编程:设计原则与模式.rar
实战:怎样用ChatGPT编程?实战:怎样用ChatGPT编程?实战:怎样用ChatGPT编程?实战:怎样用ChatGPT编程?实战:怎样用ChatGPT编程?实战:怎样用ChatGPT编程?实战:怎样用ChatGPT编程?实战:怎样用ChatGPT编程?...
伟纳SP200S编程器增强版全部资料,但不包含增强版监控程序