软件编程精髓:开发者需知的十项真理 一
【IT168 评论】编程是一种有益的体验方式,当遇到挑战时,我们会不断寻求新的解决方法。也许你会认为将毅力、直觉、适宜的工具三个组合在一起即可编写出优雅、完美的代码。然而,随之而来的拙劣的部署或另一种功能需求亦或者是沉重的依赖关系会产生不良的迭代更新,等等这些突发状况会摧毁了你最初的梦想。
我们希望每次的努力付出能够有着深远的影响,希望我们的应用程序所依赖的服务器如同磐石一样,然而编程的获取方式却是残酷的。这并不意味着你所有的努力都是有价值的。相反,我们应该学会如何面对这些残酷的事实。一起看下文中罗列出的10条实践真理,或许能为你的工作带来一丝帮助。
1. 如果这一切只是if-then-else语句
开发者往往会因封存(closures)、字节(typing)和抽象化(amazing abstractions)而争论不休,最终会选择 old if-then-else statements,这几乎是所有开发者的需求,包括输入输出内存移动数据的操作代码和算法操作代码。剩下的便是将分支或非分支两者之间进行比较。
围绕if-then-else statements,开发者们开始为其添加一些奇妙的虚伪的外表,但在最后,聪明的统计推荐引擎会在矩阵的数组列表中选出的最大值或是最小值,该引擎通过执行计算浏览所有的列表,直到你作出最后选择,否则它会一直提示你“这是最大值吗,这是最大值吗?”
2. 大多数Web网页将数据存储在表单中
在过去的20年里,互联网世界带来了神话般的财富,更好的友谊,更便宜的产品,更快的通信等等。究其核心,大部分互联网将数据存储在表单中。
Match.com?表单里包含着各种信息,比如头发颜色,宗教信仰和钟爱的食品。eBay?这个列表收集了最高价的项目列表。Blogs?字里行间记录了每一个投诉。OK,我们将其命名为table。我们有理由相信互相网是一个神秘的且充满智慧的地儿,它是一个自动化的文件文件“办事员”。
从编程语言来看,Ruby on Rails这个贯穿Web开发最流行的语言之一,是一个数据库框架。你只需要指定一个全局的变量和Rails就可为你创建一个列表,因为它熟悉所有创建表单的数据库表。
还有一个, NoSQL非关系型的数据库。现今的计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而NoSQL致力于改变这一现状。目前Google的BigTable和Amazon 的Dynamo使用的就是NoSQL型数据库。
3. 用户有自己的主见
如果你想为语言和labeled“save”创建event listener监听事件,将程序拷贝到磁盘上。在现实中,用户会期待看到一个神奇的按钮,在自己损坏的文件中修复所有的错误或添加到401(k)中,点击打开并永远保存下来。
或许,用户还会这样想,我们创造了一个完美的机器,每当用户打开时,每一个设计都是万无一失的,避免出现任何一个故障。他们设想可以点击发送并未存储在磁盘上的数据。所有这些完美的设计,他们想通过一种方式来点击任何被他们所遗忘的东西。
有时,用户是通情达理的,但在大多数情况下,他们是非常苛刻的,行为较为古怪。程序员尝试着去猜测他们的想法,当以最终的代码结果呈现在用户面前时,他们会是怎样的?结果还是失败了。因为大多数用户不是程序员,他们要求程序员像普通用户的那样思考问题就如同要求一只猫像一只狗那样思考一样,这根本就不符合逻辑思维。
不管你如何发明智能的或设计出优雅的代码,用户不会按照你的想法来看待问题。因为他们不会用140个字符限制来表达他们的愤怒和欲望。
4. 部分代码永远不会被使用
你的工具是否支持XML,CSV,Aramaic。我们的操作团队能否解析玛雅象形文字,也许在2012年年底有这方面的需求,如果不具备该功能,ok,如果你能提供此项功能,将会获得更多的项目订单。
当然,用户不用关心太多,他们只想要一个按钮,这个按钮甚至可以把他们混淆了。这个完美的代码当你在编译时能够支持N-1按钮,在QA团队中能够很好的被执行。
程序员不像艺术家,他们可以指望自己的父母或者亲戚能为其带来某些业绩,而我们的父母不会通过执行代码来测试性能。
http://tech.chinaunix.net/a2012/0409/1334/000001334763_1.shtml