设万维读者为首页 万维读者网 -- 全球华人的精神家园 广告服务 联系我们 关于万维
 
首  页 新  闻 视  频 博  客 论  坛 分类广告 购  物
搜索>> 发表日志 控制面板 个人相册 给我留言
帮助 退出
懒姑娘的博客  
春江水暖鸭先知  
https://blog.creaders.net/u/3495/ > 复制 > 收藏本页
网络日志正文
如何成为一个优秀的程序员二 2010-02-25 05:50:41
                                                剪不断,理还乱

进入编码之前,程序 员要作一件重要的事情:设计程序的整体构架:也就是将现实世界的具体需求,转换成计算机语言中的各种模块关系,即我们程序员常说的建模.程序的结构是否合 理十分重要,它往往决定了程序的好坏.不合理的程序结构最终将导致整个程序成为剪不断,理还乱的一堆乱麻.

那么什么样的程序结构才能算合理呢?这当然和程序所要完成的任务直接相关,很难作一刀切的定义.但是我认为万变不离其宗,有几条原则:
1 每个模块的属性有清楚的定义.
2 模块之间的关系要简单有逻辑.
3 尽量避免模块之间的循环关系.

建 模工作确实十分重要,软件工业界也推出了很多建模工具,比如UML,OMT等等.但在实际的软件开发工作中,我发现不少程序员有过度夸大建模重要性的倾 向,花大量的时间纸上谈兵,结果反而使得开发工作陷入困境.我就曾遇到一个这样的例子.我有位同事,当时他负责一个为期六个月的项目.可是三个月后,他还在忙着画他的UML图.一个字的编码都没有写.按照他的话来说:要想程序在十年之后还有可运用性,必须花足够的精力让程序结构富有弹性,也就是说,我们比须预想到未来的十年中,我们可能会遇到各种新需求.本来很简单的一个问题,被他这一弄,变得极其复杂.

这种建模理论,在我看来是极其不现实的
首先,人类思维的局限性使得我们不可能预见未来的所有需求.
其次,模型越复杂,开发出来的程序问题也会越多.
最后,软件的开发应该是一个动态的发展过程,最初构建的模型如果有什么不足,可以在开发过程根据需要不断修改.就好像我们不可能要求孩子一出生就具有成人的骨骼一样.

因 此我认为,开发软件需要建模.但是建模不应该成为软件设计中的一个僵硬的单独的板块.它应该是贯穿在整个开发过程中.而且,它必须和实际编码结合起来.很 多问题只有在写编码的过程中才能发现.在软件的结构设计中应该始终秉承这样一个宗旨:我选择目前看来最简单的,最有效的程序结构.

佛教中人常说:世上本无事,庸人自扰之.简单永远是最好的.谁要想一口气吃成个大胖子,他得到的只能是"剪不断理还乱,是离愁,别是一般滋味在心头."
浏览(2807) (4) 评论(6)
发表评论
文章评论
作者:又一蛮夷 留言时间:2010-02-27 12:44:02
我得投“懒媳妇”一票,那个“灵”字真是学不来的。在说为什么之前,我得先站一下队。“懒”字在工作中是一种高层次的追求,要想懒,就得干得巧,干得有效,如果再加上点“灵”气,懒字还是可以达到的。现在我们这已有“懒姑娘”和“懒媳妇”了,我就倚老卖老,自称一回“懒老头”吧。工作中常能偷懒且不误工期,还有时间来这码字,这个“懒”字大概也当得起了。

再回到那个“灵”字上来。在写程序中,常有人用到“风格(style)”这个词,要说这个词在讨论艺术作品时用的更频繁些。所以说好的程序更像一件好的艺术作品,比如说一篇好文章,一幅好画或一桌好菜。那个“灵”字在其中起的作用绝对是重中之重。有点牵强附会了,可也不是完全没有道理,是不是?

最后得说说数据库,在博客里用数据库技术那是多思猜的,而且还猜错了。我那不过是无事忙,加两个 HTML 页面,小巧而已。(多思,下回再猜的时候,得多动点脑子,要不然我就强行把你拉入“懒”人的队伍,改个名叫“懒思”好了:-)
回复 | 0
作者:多思 留言时间:2010-02-26 11:33:22
二懒,向你们再推荐一位同行,网名叫“又一蛮夷”。此人将数据库技术运用到他的万维博客,不仅为自己的博文开创了一个table with index。还将他在他人博文底下的留言于做了back up。号称“变天帐”。真是万维网上独一无二!

http://blog.creaders.net/afanti/user_blog_diary.php?did=56028

http://blog.creaders.net/afanti/user_blog_diary.php?did=54498
回复 | 0
作者:懒姑娘 留言时间:2010-02-26 10:48:06
转悠
很高兴又遇到一位同行.不过我不太同意你的观点.你说一个优秀的程序员靠的是个灵字,是学不来的.恰恰相反.我认为只要掌握了正确的方法,再加上用功,每个人都可以成为优秀的程序员.不过我这里说的是程序员,不是软件开发大师.要想成为大师,恐怕真的是学不来的.
回复 | 0
作者:转悠 留言时间:2010-02-26 10:22:51
懒姑娘,我就直呼大名了,想着你不会介意。就像别人称我“懒媳妇”,我还乐呢。

同行,握个手!谢谢你分享的职场心得,太有同感了,优秀的程序员跟心灵手巧的煮妇是一个道理,就那么一个“灵”字,有时候不是能学来的。
回复 | 0
作者:懒姑娘 留言时间:2010-02-26 00:39:46
多思
谢谢你如此心细.人们常说丑妇乃家中宝,我却要说懒人为家中福.因为一个懒字,可以避开滚滚红尘中许多无聊的纷争.
回复 | 0
作者:多思 留言时间:2010-02-25 07:19:22
对不起,不敢直呼其名,生怕造成不敬。阅读你的文章,很长见识,也深受启发!非常赞同你的观点“简单永远是最好的”。现实生活里,确实有人将编程搞得过于复杂。我曾经为一家公司从事软件设计。这个软件比较庞大,由好几个部门同时协调。一个数据库里的table竟然超过365个,更不要说view等等其他东西了。为了搞清这些table的相互关系,无法在桌面上探讨,必须将table的结构图打印出来,铺在会议室的地板上来搞“拼图”,弄得人人头疼。导致这种现象出现的原因之一是各部门为了自己的需要随时开创新的table,于是就出现了你文中所谈到的“模块属性不清”,“互相循环”等等弊端。看来,你的思维很活跃噢!怎么戏称自己“懒”呢?或许是以退为进,以守为攻的自嘲吧:-)
回复 | 0
我的名片
懒姑娘
注册日期: 2010-02-23
访问总量: 95,912 次
点击查看我的个人资料
Calendar
最新发布
· 女儿制作的动画片
· 保持沉默保持尊严
· 性.资源.权力
· 你进你的主流,我走我的边缘
· 法国国家图书馆
· 如何成为一个优秀的程序员( 四 )
· 如何成为一个优秀的程序员三
分类目录
【学无止境】
· 如何成为一个优秀的程序员( 四 )
· 如何成为一个优秀的程序员三
· 如何成为一个优秀的程序员二
· 如何成为一个优秀的程序员
【随便说说】
· 保持沉默保持尊严
· 性.资源.权力
· 你进你的主流,我走我的边缘
· 谈谈恐惧
· 办公室政治斗争
· 老虎究竟招惹了谁?
· Alan Turing的命运
· 阿凡达---陈词滥调
【天涯比邻】
· 女儿制作的动画片
· 法国国家图书馆
· 日内瓦湖边小镇
存档目录
2010-08-18 - 2010-08-18
2010-06-05 - 2010-06-05
2010-04-11 - 2010-04-15
2010-03-08 - 2010-03-16
2010-02-23 - 2010-02-27
 
关于本站 | 广告服务 | 联系我们 | 招聘信息 | 网站导航 | 隐私保护
Copyright (C) 1998-2024. Creaders.NET. All Rights Reserved.