软件编程精髓:开发者需知的十项真理 一

标签: 一些事 | 发表时间:2012-06-13 09:51 | 作者:哥依然还在
出处:http://www.qinblog.net

【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

相关 [软件 编程 开发] 推荐:

软件编程精髓:开发者需知的十项真理 二

- - 水煮沉浮
一位经理人曾告诉我有关他的秘密,他总是面带微笑并告知他的团队,他很热爱他们所作的事情即便是有危险的,在他走出门的那一刻,他会说“哦,还有一件事”. 那个弧线球部分覆盖了该项目,并要求大家重新设计应用程序. 意思说作为一名管理者首先你得肯定团队的工作能力. 项目范围的扩张程度直接体现了这个项目结构的最终成果.

软件编程精髓:开发者需知的十项真理 一

- - 水煮沉浮
【IT168 评论】编程是一种有益的体验方式,当遇到挑战时,我们会不断寻求新的解决方法. 也许你会认为将毅力、直觉、适宜的工具三个组合在一起即可编写出优雅、完美的代码. 然而,随之而来的拙劣的部署或另一种功能需求亦或者是沉重的依赖关系会产生不良的迭代更新,等等这些突发状况会摧毁了你最初的梦想. 我们希望每次的努力付出能够有着深远的影响,希望我们的应用程序所依赖的服务器如同磐石一样,然而编程的获取方式却是残酷的.

[译稿]软件编程21法则

- Alan - cnBeta.COM
任何一个有经验的程序员都知道,软件开发遵循着一些不成文的法则. 然而,如果你不遵循这些法则也并不意味着会受到惩罚;相反,有时你还会获得意外的好处. 下面的就是软件编程中的21条法则:.

软件吞噬软件开发

- - PingWest中文网
软件蚕食世界,自互联网特别是移动互联网连接线上线下服务后,已成为不可逆的趋势. 每一项实用的服务可以由小团队来完成. 以WhatsApp为例,这款被高调收购的IM应用,拥有4.5亿月活跃用户,70%的日活跃率,至今还保持每天新增用户1000万的速度. 但这些服务居然由32名工程师支撑下来了,所以有了业界八卦“每位员工价值20亿”的说法.

软件开发的核心

- - 博客园_知识库
  「我们一直这样做开发,时间做久了,便忘了当初的本意.   有关软件系统开发,我们谈些什么.   我们谈过程,编码规范、开发流程、同行评审、结对编程、持续集成,从瀑布到敏捷再到极限编程.   我们谈架构,企业级、J2EE、容器化、SOA(面向服务架构)、Microservices(微服务化).   我们谈规模,大容量、高并发、大数据.

开发软件有多贵

- - 透明思考
有个朋友的朋友想做一个公益的事. 因为出资的都是教育水平较高的精英人士,所以对项目的监控透明度要求比较高. 于是这个朋友的朋友就想了,信息时代嘛,IT工具不是可以促进交流提升效率么. 于是他对我说:我们想做个app,可以干这个这个这个……. 我打断他说,别着急,做软件很贵的,你不一定玩得起. 市场上定制开发软件的人工成本按一人月20,000人民币来算,平均每人天1,000人民币.

低质量软件编程成本价格表

- - ITeye资讯频道
注意:下面这个清单里描述的事情并不是你绝对不能做的,它只是用量化的方法来让你知道编程上的这些做法将会产生的负面代价. 这些费用是在代码审查时你将要付出的. 代码库中的程序编码风格一致虽然不是很重要,但值得你去遵守. 在提交代码的说明信息上偷懒. 请细读这篇 代码提交说明信息指导(英文). 大多数的局部变量都最好使用方法代替.

Facebook是如何开发软件的

- Felix - 互联网的那点事
Facebook的工作方式让我着迷. 那是一个非常独特的工作氛围,无法复制(也并不适用于其它公司). 下面的是我从很多在Facebook工作的朋友那里搜集到的关于这个公司如何开发和发布软件的只言片语. 看起来对Facebook感兴趣的大有人在. 这个公司以程序员为主导的企业文化受到人们的极大关注,很多公司都在努力现实这样的企业文化.

软件开发的“三重门”

- - 酷壳 - CoolShell.cn
自从上次写了“ 程序员技术练级攻略” 以来,就觉得似乎还有很多东西没有谈到,但当时没有继续思考了. 而春节前有人问我,是做底层技术,还是做业务. 这问题让我思考了很多,不由自主地回顾了一 下我这十多年的软件开发经历,并顺着整理分类了一下自己解决过的若干问题,还发散想了很多,经过了一个春节假期的发酵,产生了下面这篇文章.

软件开发的人文关怀

- - 博客园_知识库
  几年前,我从温伯格的《技术领导之路》中学到一点:技术人员往往更喜欢和机器打交道,因为他们“认为”自己更适合和机器打交道;但是,优秀的技术人员必须(也必然)具备好的沟通能力. 所以,温伯格鼓励各位技术人员多加练习和其他人打交道的能力. 温伯格的这个观点我是非常赞成的,好的技术人员一定需要“勇敢”面对他人,不能被“自实现的预言”局限在机器的世界里.