程序员的“素质”是什么?
来源:互联网 发布:怎么在手机淘宝开店 编辑:程序博客网 时间:2024/04/20 03:04
在CSDN看到一个很有趣的帖子(http://www.csdn.net/develop/article/28/28005.shtm),里面说同一个功能,中、日两国程序员写出的代码天差地别:
JAPAN:
Dim gridItemIndex As Integer 'comment
Dim currentPageIndex As Integer 'comment
Dim pageSize As Integer 'comment
gridItemIndex = e.Item.ItemIndex
currentPageIndex = meisaiIchiran.CurrentPageIndex
pageSize = meisaiIchiran.PageSize
Dim updateDataRowIndex As Integer 'comment
updateDataRowIndex = (currentPageIndex * pageSize) + gridItemIndex
dt.Rows(updateDataRowIndex).Item(t.BindFldName) = txt
CHINA:
dt.Rows(.CurrentPageIndex * .PageSize + e.Item.ItemIndex).Item(t.BindFldName) = txt
这段代码以前在软工版也见到过,有不少人认为两段代码折射出程序员的素质。一种看法是,日本同行写的代码更规范,可读性更强,因此显得比较有素质;另一种看法是,中国同行的代码更简练,废话更少,因此显得比较有素质。
程序员的素质,这是实实在在的东西,但不是从这两段代码中体现。也许你思维比较灵活,思路比较清晰,脑子转得比较快,对程序的感觉比较敏锐,那你也许更喜欢中国同行那段代码;也许你像我一样,脑子比较笨,想问题容易迷糊,需要多几个临时变量才能搞清楚状况,那你也许更喜欢日本同行那段代码。没关系,哪种风格都可以。我们不难猜到,这两段代码是同一个函数的两种实现方式。作为项目经理,我说,无所谓,你喜欢哪种风格就用哪种风格。只要你素质良好,用哪种风格都不妨碍你成为优秀的程序员。因为,素质并不在这两种风格之中。
那么,素质在哪里?恰好就在这两段代码之外。放这段代码的函数,你给它起了一个怎样的函数名?这个名字能够让别人一眼看懂它的作用吗?这个函数有没有单元测试?函数的功能、出错情况和边界值在单元测试里都能体现出来吗?这才是程序员的素质所在。只要你给每个函数起的名字都能一目了然地看懂,只要你的每个函数都有完备的单元测试,那你就具有程序员最基本的素质。至于这个函数里面的代码,你喜欢怎么实现都可以——或许我应该再加上“重构”这项素质?
面向对象理论说“针对接口编程”,同样的,程序员的素质也体现在接口上。如果到了别人来看你的实现代码,你作为程序员的素质就已经遭到质疑了。还是先在函数名、单元测试这些地方多下下功夫吧。
[点击此处收藏本文]
- 程序员的“素质”是什么?
- 程序员的“素质”是什么?
- 程序员的素质
- 合格程序员的素质
- 合格程序员的素质
- 程序员的素质
- 程序员的素质
- 程序员的素质
- 程序员最重要的素质
- 程序员应有的素质
- 程序员的宝贵素质
- 程序员的素质
- 程序员的必备素质
- 程序员应具有的素质
- 程序员应具备的素质!!
- 程序员应具备的素质
- 程序员应具备的素质
- 程序员应具有的素质
- 周杰伦与席慕容:25年后与25年前的《七里香》
- 关于JDK翻译
- 晕啊,写论文,资料全是E文
- typedef和typename关键字
- test
- 程序员的“素质”是什么?
- aa
- Regular Expression心得体会
- Java网络服务器编程
- 浅析Java中Data类的应用
- Domino R5中使用Lotus Script 处理XML
- Google搜索引擎新鲜玩法
- 以数据为中心的软件,一例
- blog 第一篇
本来很简单的一个事,搞得这么复杂,还说什么可读性?
写这个帖子的人很肤浅。
重构的确很重要,某方面来说命名也属于重构一部分。
我们的项目经理是个垃圾,除了复制 粘贴 删除 (删除完了还要找你)什么都不知道,就要求我们尽量、把程序写的简单
为什么不在开始就保证没有错误?如果从这方面讲,写的越多,出错的几率就越高。
日本的程序员是按照行数来付报酬.中国的程序员是按照项目来付报酬.
但在开放源代码的时代里,这样的素质能行吗。
我们要提倡的是团队精神而不是个人主义!
so sutra
不然每次都是z诸如ADataSet.FieldByName('UserName').AsString
很不好
所以都用
with ADataSet do
begin
strUserName :=FieldByName('UserName').AsString;
strUserID :=FieldByName('UserID').AsString;
...
...
...
end;
总之比较爽
:)
我认为比较理想的代码应该这样:
dt.Rows(updateDataRowIndex()).Item(t.BindFldName) = txt
在updateDataRowIndex()里面去作那些乱七八糟的计算吧
只用一次的东东还使用了那么多的临时变量,有病呀!
我之所以写这篇文章,就是因为为了批评某些初级程序员对软件工程,编码风格一知半解的状态。
一些初级程序员片面地认为注释多,临时变量多,还有使用复杂的命名法就是体现了软件工程,体现了程序员的素质。实际上差的远了。
两段代码来自一个真实的项目,我就是那个中国程序员。我大多数时候使用C语言开发医疗仪器上的嵌入式操作系统,或者图像处理软件,系统代码行数一般在5万行到20万行之间,一般都是技术骨干或者项目经理的角色,应该算有大系统的开发经验了吧。
我和欧美程序员,日本程序员都合作过,对国外程序员还有点了解。好的程序员在那里都是一样的。相信我,写出如上代码的那个日本程序员没有入门。他的代码根本不应该放到大型系统中。
http://blog.joycode.com/kaneboy/posts/15274.aspx
后来用了ide,才发现前面一种情况无法在后面的语句中加入断点,而后一种情况则经常让我无法快速知道究竟哪个值出了问题
日后,我想我会更多分行写程序的
如果我在一个函数中需要多次用到一个变量值时,
我们就应该把这个值用一个变量存起来,避免重复获取.
否则的话,可以直接使用.
重点:要方便后期维护
http://blog.aspcool.com/tim/posts/536.aspx
我觉得如果一定要赋值,第二段代码中把那个计算公式提出来就够了,容易跟踪结果。但那个公式太简单,而且只用一次,不提出来也没有什么问题。
注释是要有的。但是,临时变量也不能太多。
代码“小”和代码“精炼”并不一定等同; 代码的可读性非常重要,这对调试、维护都很有帮助; 另外, “小”的源代码未必能产生高效率的目标码。
那些卖弄第二类代码的程序员在我看来只是水平和认识还没有够。
大型程序讲求合作。这一段代码其实说明不了太多问题。第二种写法最好有一定注释。
但所说的程序员的习惯还是很重要的
但我还是赞同楼主观点
http://blog.csdn.net/freeboy20sui/archive/2004/11/10/176120.aspx
最简单命名就能看的出一个程序员有一个怎样的素养了。
那只是几行代码而已,如果是万行几十万行呢?
你还对这种习惯嗤之以鼻么?
^_^
这只说明一问题,太没素质了,为了多赚几日元就把程序写的那么麻烦,简直是素质低下。
一般人是采用第一种方法,如果你的系统不是要求很严格,比如内存,cpu,运行时间之类的要求.否则还是必须要优化的.
1. 短小的,语意集中的方法method
2. 语意完全的方法名
真是无聊!
看这样的东西真是简直浪费生命,问题是我已经进来了。
哎!!!