首页 > 其他 > 如何开发一个功能

如何开发一个功能

2013年3月2日 3,265 views

也许光看标题就感觉,这是一篇晦涩无趣的article,但我想表达的东西很重要,所以我还是写了下来。

这篇文章,基本可以针对除腾讯、百度、阿里、搜狐、新浪、网易、人人、360以及谷歌、微软、甲骨文等等之类的公司(因为这些公司,至少在技术上,我还是比较欣赏的,虽然他们并不欣赏我,嘿嘿)之外的大约90%的it公司。

写这篇文章时,我有3年基于javaEE的管理系统开发经验(这貌似也没啥好说的),大约就职过三个公司;也做过项目管理,review过别人代码,很多时候对别人开发的功能不太满意。

如果你只经历了一个不满意的项目,你可能会认为,只是自己运气差,遇到了一个管理不好的项目,你会认定这只是你所在的公司的问题,而大多数公司其项目管理都是很好的,真的是这样吗?当你跳了一次又一次之后,你失望了,这项目管理咋都这么乱!你的大脑突然的某一刻一不小心站在了一个更高的层面,俯视了一下所有的it公司,问了一个问题,有多少公司的项目管理是跟过家家似的?答案是,很多!你开始相信,项目管理混乱根本就是绝大多数公司的通病,而管理有序的项目,可能只存在于那少数的几个公司(那些毕业就能进这些公司的童鞋,你们真的好幸运)。

听说聚美优品搞周年庆,刚开局服务器就撑不住了,聚美优品也算是名牌公司了,很多人都知道,但又怎样!反问,为何天猫双11没挂?



说正题吧,如果把一个功能做到完美,比喻成100分的话。那么要想拿到这100分,大概可以分为三步走。

一、请保证,你开发出来的功能,有尽量少的bug
不知道您有么有看明白这个尽量少的意思。
简单来说,就是你已经预想到了,使用这个功能的所有场景!并有足够的信心相信这个功能无论任何人怎么用,都不会出问题。所谓胸有成竹,如是也。
或者,你可以想象这样一种场景,你坐在椅子上,悠闲的抽着烟,若有所思但又信心满满的对测试人员说:你测吧,测出问题,中午饭我请了!
我认为bug分两种,一种是质上的,一种是量上的。如果出现了质上的bug,请自觉请人吃一个星期的饭。
至此,得60分。(注:按我经历,能够把功能做到60分的程序员,都很少!)

二、请保证,你的功能有横向可扩展性
这里的横向是给可以意会的人看的,如果你没意会到,就当这俩字不存在。
实现一个功能,有太多的方法,优秀的开发人员,就会把这个功能看的更长远。
如:请输出1到10
你可以这样做
print(1);
print(2);
print(3);
.
.
也可以这样做
function printNumbers(i,j){
for(int k=i;k<=j;k++){
print(k);
}
}
printNumbers(1,10);

如果你的代码维护者,接到了一个新需求,输出100到1000,当他看到第一种实现方式的时候,他绝对心里在骂你是个SB。
复杂的例子,是晦涩的,这里不宜说太多,说太多你就不看了(俺的文笔实在太差)。
在开发时能想到扩展性的开发人员,都是优秀的,或具有成为优秀开发人员的潜质。
至此,得80分。

三、追求完美
也许你是一个完美主义者,你不能容忍一个等号一边有空格,一边没空格;不能容忍两行代码没有对齐。
在功能实现后,发现距离endline还有一段时间,于是开始思考某个地方的算法其实还是可以优化的;有两个函数,他们的功能相似,其实是可以合并为一个函数的,这样代码就可以减少25行,Yeah。
等等。。
至此,自己打分吧

今天晚上,看了《辛德勒的名单》,我想我们作为程序员要明白一件事,就是不要想在辛德勒的兵工厂里,制造出来出色的炮弹,对吧!

附上一张苹果的logo,期望我们程序员怀着一颗精益求精的心,开发着让自己感到自豪的功能。

分类: 其他 标签:
  1. ydmmeiduo
    2013年3月4日12:02 | #1

    写的不错哈,哎呦,没发现高手在我身边呢,挺有总结能力啊?大早上忙啊忙,原来就是这个呀,赞一个

  2. ydmmeiduo
    2013年3月7日17:16 | #2

    快点更新

  3. lijun
    2013年3月8日13:28 | #3

    总结的很好啊。不错不错

  1. 本文目前尚无任何 trackbacks 和 pingbacks.