百度站长网站提交,天津模板做网站,室内设计网上学校,中山网站开发公司最近#xff0c;我在阅读 Steve Yegg 的文集《程序员的呐喊》。 这是一本非常有趣的书#xff0c;里面甚至包含了一个小测试#xff08;原文#xff09;#xff0c;区分一个程序员到底是保守派还是自由派。 下面一共有十个问题#xff0c;每个问题都有 A 和 B 两个选项我在阅读 Steve Yegg 的文集《程序员的呐喊》。 这是一本非常有趣的书里面甚至包含了一个小测试原文区分一个程序员到底是保守派还是自由派。 下面一共有十个问题每个问题都有 A 和 B 两个选项请选择你的答案。 问题一Bug 还没修复软件能不能上线 A软件发布前应该编写完整测试充分调试尽量修复所有 bug。 B不管多努力bug 总是无法避免的如果性质不是很严重可以先上线根据反馈再调试和修补。 问题二容易出错的特性是否应该用在程序中 A很多语言的高级特性都是很容易出错和危险的应该禁止用在代码里。没有这些特性我们一样可以进行开发代码也会因此变得更安全。 B聪明的程序员有学习动力知道怎么可以解决问题。为了避免出错就立下一堆规矩完全不可取。 问题三新的语言或语法是否应该有所限制 A公司里可以使用的语言数量应该受到限制这样万一系统在半夜或是圣诞夜挂掉的时候值班的人就不需要去临时抱佛脚学习新语法了。另外也应该禁止改变语言原始定义的语法比如严格限制操作符重载和元编程。 B程序员的学习能力是惊人的没必要保护程序员远离新语法只要有需要他们自然能学会。 问题四静态检查是否必要 A编译器的安全检查很重要不能进行静态检查的代码通常是不可接受的。 B代码应该短小精悍静态检查工具可能会让代码变得又臭又长。 问题五数据是否一定要有格式定义 A数据必须遵循事先定义好的格式。比如关系型数据库必须满足第三范式或 UMLXML 都必须有 DTDNoSQL 数据库必须有单独的格式定义标明所有允许的键以及相应的值类型。 B严格的数据定义只会妨碍灵活性延缓开发进程。更好的策略是写一些注释或者只定义一部分甚至先略过它。因为在大量用户案例出现之前没人知道数据可能会是什么样代码先行才是正确的做法。 问题六公共接口是否应该静态化 A公共接口必须严格建模。数据绝不可以是无类型的所有的输入输出实体都必须完整显式地定义为可以静态检查的模型。 B公共接口应该尽量简单向前向后都兼容。建模时太过缜密的话其实只是在猜测接口会怎么演化。 问题七是否可以留有方便修改的后门 A生产系统里绝不允许存在危险或有风险的后门。想要通过调试器、SSH、或任何接口连接到工作中的生产系统去修改运行时的代码或数据应该是不可能的。 B系统的灵活性有时能决定客户或合同是归你还是归对手。至于生产系统的安全隐患可以通过日志、监控、审核等手段来缓解。事实证明很多有最高权限后门和 Shell 接口的大型系统都做到了在控制风险的同时具备运行灵活性。 问题八急需的但有安全隐患的系统是否可以上线 A假如一个组件的安全性存在任何疑虑那它就不能发布上线团队怎么哀求都没用。 B企业要保持竞争力唯有不断有意识地去承担风险。就算不去冒险其他系统急需这个系统线上可能还是会出问题既然如此那还不如冒险一试。 问题九代码运行较慢是否要去解决 A快比慢好。没人喜欢慢的代码所以代码的性能一定要好。从一开始就要有性能意识那些比较慢的语言和库都应该避免使用。 B不要过早优化代码先跑起来再说。正确性比性能重要而原型的快速迭代又比正确性更重要。只有当客户将性能列为首要问题时再进行优化。 问题十你最认可的语言是哪一个 AC、Java、C#、D、Go、Clojure、Erlang、Pascal、Scala、Ada、Ocaml、Eiffel、Clojure、Erlang、Pascal、Haskell、SML。 BC、Objective-C、JavaScript、Visual Basic、Lua、Scheme、Python、Common Lisp、Smalltalk/Squeak、Perl、Ruby、PHPBash。 结论 如果你的答案有超过一半的 A你就属于保守派程序员。你非常重视软件安全和可靠性厌恶风险提倡严格管理认为有效的规章制度是软件质量的保证。 如果你的答案有超过一半的 B你就属于自由派程序员。你重视软件开发的灵活性提倡给予程序员足够的自由只要新功能顺利上线可以接受一定的风险和瑕疵。 保守派或自由派都没问题都是可取的。问题是一支和谐的团队最好是由单一人群组成要么全是自由派要么全是保守派免得双方不停地发生理念上的冲突。 原文地址http://www.ruanyifeng.com/blog/2016/09/conservative_vs_liberal_programmer.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注