说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

论程序员的自我修炼

HTML文档下载 WORD文档下载 PDF文档下载
软件开发是个挑战,尤其是对于那些完美主义的程序员。为了想要成为更好的程序员,总会开发出一些特别的功能,在软件设计上想要做到零瑕疵,但事实上,完美的软件设计是根本不存在的,试着让你的软件“足够好”就好!

软件开发是个挑战,尤其是对于那些完美主义的程序员。他们需要制定大量的决策以及许多问题的解决方案,这对于有些人来说会感到很难。当然,你可以在线搜索到最佳实践方案或在StackOverflow上提问。但即便你找到了想要的答案,也未必能让你感到满意。你怀疑这个设计是否完美,事实上,真正完美的设计几乎为零。

设计难题接踵而来

想彻底解决设计难题是不可能的。这是因为每个需求都会浮现在你的脑海里,你会遇到设计领域里最大的挑战,比如选择数据还是表示层。我是使用MVC还是MVVM?哪种OPM工具适合我?我该如何处理多个数据库?等等。每个问题都会让你不知所措,并且所遇到的设计问题也在日益增长。每走一步都会使你觉得像是有座大山摆在你的面前。不堪负重的感觉让你想要逃避或者拖延解决问题的时间。但拖延并不能解决问题。

解决类似这样的问题最好的办法就是(Divide & Conquer)拆分 & 克服。你必须暂停思考脑海中的所有系统问题,试着将设计拆分成细小的模块,并且一个一个的查看可以做哪些简单的模块。如果可能的话,选择迭代开发方法。这样你就可以将思维专注在设计障碍上 ,那么你就能看到多个小山丘而不是整座大山浮现在你的脑海中。

此外,不要花费太多的时间来选择工具或者API或者规则引擎。这些工具仅仅是为了让我们工作起来更加轻松。相反地,把更多的 时间放在设计原理上,比如关注分离(Separation of Concerns)。SoC(系统芯片)会允许你改变任意软件层或者不影响其他系统的软件工具。

TDD(软件测试驱动开发)会让你鼓足勇气,让你在软件行业发生质的改变。不要忘了,在设计上花费的时间是远远不够的,正如Steve McConnell 在Code Complete这本书中所说:

“When areyou done [designing]? Since design is open-ended, the most common answer tothat question is “When you’re out of time.”


需求变更

为了生存,你的客户或者公司必须适应变化。而这就意味着需求将发生变化。你不可能只编写一款软件就能满足未来所有的需求。总会有些新的需求时不时的跳出脑海中。所以,不要试图掩盖未来的需求,尝试去编写满足目前需求的软件。

不要过量设计

如果你花费数天时间来开发某个特别的功能,而这个功能一年里为你的客户只减少五分钟,那么实际上你的工作是无用的。我能理解,有时我们无法阻止自己做出一些特别的改变,因为它似乎使我们觉得像是一个更好的程序员或者只是为了好玩而已,但是考虑到成本/效益,时间是宝贵的,把时间花费在其他方面或许会更好。


简洁原则

简化,当你需要存储某个对象到系统文件时,没有密集型的工作或者特别需求,编写一个自定义对象序列化是毫无意义的。我看到有些设计从工程学角度来看,它们像是杰作,但它们过于复杂。你不应该让你的设计过于复杂。有时,最好的解决方法就是简单。因此,请保持 KISS原则。

相信自己,鼓足勇气

设计其实是为了检验程序员成果的好坏。不同的程序员可拿出不同的设计思路。因为没有单一的解决方案,这可能会导致你为某个特性搜索所有的最佳方案, 但这并不意味着你应该停止学习或聆听他人的想法。在设计过程中,不是学习所有最佳实践就能适合你的问题。相信自己,做最好的设计,实施自己的设计思路。

重构是个非常好的做法。当出现坏代码时,试着用重构的方式来解决。从错误中学习,它将有助于你未来设计。


没有完美的设计

无论你做什么,最终都会以一款无法令你满意的软件而告终。正如 Hunt and Thomas在《The Pragmatic Programmer》中写道的:

“完美的软件是不存在的。在计算机历史上,没人设计出完美的软件。这是不可能的,也许你是第一个,除非你不接受这个事实,而浪费时间或者精力去追逐一个不可能实现的梦想。”

我很抱歉,但他们是对的。不要去追逐一个不可能实现的梦想,试着让你的软件“足够好”就好!

英文出自: Thingstocode

免费获得价值1200元Unity2014顶级盛会门票! IBM公布Softlayer中国业务落地时间表 推荐30款最佳的数据可视化工具 数据库迁移测试:选白盒还是黑盒? 东软发布首款英特尔架构企业级移动终端解决方案 英特尔与腾讯创立游戏创新实验室 推进RealSense技术 《近匠》系列沙龙之探寻绝密武器:移动跨平台开发 iOS走向开放:苹果新推iAd Workbench广告服务 腾讯薛伟:快速模型更新在精准广告推荐中的应用 微软Build2014第一天要点精华汇总(组图) Windows 8.1 Update 1五大改变:任务栏回归,增强鼠标支持(图) 【十大院士】怀进鹏:全球的计算模式可能重新形成 微软Build2014第一天应了解的15件事 TypeScript1.0发布,完美支持Visual Studio系列产品 欲与Android展开价格战,微软宣布在移动设备上免费开放Windows 2014深圳英特尔信息技术峰会次日要点汇总 4月4日:微软39周岁,生日快乐! 正式进军硬件市场 Atlassian发布可穿戴设备Bitband 云计算时代IT专业人员需具备的10项技能 【走近院士】李德毅:大数据是连接虚拟和现实世界的桥梁 微软Build2014大会第二天干货总结 Microsoft Azure拥抱Puppet、Chef、MongoDB... 唏嘘不已!Brendan Eich上任Mozilla CEO仅十天即因歧视同性恋被迫辞职 最火HTML5 JavaScript游戏引擎:国外篇(一) Facebook发布PlanOut 开源部分A/B测试源码 一周消息树:6款Java转C#的最佳工具、Web开发者必备的9个软技能 对话“宙斯杯”获奖代表:依托京东云平台,打造精品电商CRM 关于微软开源WinJS,开发者必须知道的5件事 告别丑陋banner条,InMobi联合开发者尝试原生广告 免费游戏开发经验谈:第一印象很重要 《近匠》小旭音乐:游戏音乐金牌匠人的练级之路 日600亿消息,月4.65亿用户——WhatsApp的Erlang世界 用jbuilder怎样把htc文件打包到web application中去? 求助高手指点:用vb实现把结果输出到已定制的word表格中 用200百分问个很菜的问题 关于超星的问题 探讨:如何把软件开发工作为我们一生的事业 ocx问题?参数传递 用200百分问个很菜的问题 请问谁能告诉我一个制作从模糊到清晰运动的源代码或地址? 改变对话框中菜单区的背景色,急 弱智问题:我修改一个打印报表的数据窗口格式,修改后的新问题是它每次打印时接着纸的最上面, IE不能打开新窗口。是什么道理? java下如何得到当前程序(application)的路径?很急!! 组件调用问题? 初学者问题, 简单!! 为什么struts的中文资料如此之少??哪位知道有哪些中文书籍?电子书最好!! 我想做一个报表之类的东西,能在网页上显示,大家给点提示,有现成的例子最好,先谢了 请教各位大大 一个关于消息映射的郁闷 如何在Remote Data Module中使用ADOCommand? 真失败...关于优化pl/sql的问题 为什么名字空间下没有ADO 如何获得一个文件的完整URL地址? 谁能详细的讲讲我不明白的例子。我开ID送1000分。我把ID给费了。一定要搞懂 Applet从html中读取参数信息????? 在win98里可上网,但为什么不能查看网络邻居的属性?(在线等!!!) 关于超星的问题 有谁知道win2003+sql2000的问题? 怎么删除表中列的DEFAULT啊??? 高手请进,将程序加为服务 关于邮件服务器 组件编写中的问题--如何显示图标 记得以前学计算机的热情很大,并且非常希望有一台计算机,可是现在机器有了,却没有了以前的热情,经典书买了一堆却都没有看,我在想到底要不 关于超星的问题 大家装了windows server 2003么?怎么样啊?讨论一下好么!! 救救我吖!!怎样在oracle8.0.5中直接添加数据!!高分!急!! 大问题!!!装2003后网卡驱程不行,声卡装了听不到声音??? java能不能实现多文档(象VC++中)? 哪位E文好的同志能把这段话翻译出来,是RFC1928中的一段。 一个比较低级的问题-vb里面的回车换行孵的ASCII码是多少?? 奇怪!!!奇怪!!!奇怪!!!奇怪!!!快来看看! 谁知道windows的按文件名排序是怎么回事阿? ie问题 如何从一个框架调用另一个框架的方法?有办法吗?(在线) 突然觉得计算机语言有个误区 请问我用depends打开了dll文件,看到了里面的函数,但是参数表和返回值类型没有啊 水晶报表急问,大家帮帮忙看看! 请教文件查找的问题。 谁知道windows的按文件名排序是怎么回事阿? oracle难学吗 <jsp:getProperty name="userInfor" property="*"/> 出错!!(在线等待) 如何在vb中设置Combo的默认值?立刻给分 2-sinx/2-cosx的取值范围 什么叫农业产业化 你见过最美的事物是什么? 树欲进而风不止,子欲养儿亲不待的意思 如何写农业产业化经营文字材料 明朝的意思 怎样求复合函数的单调区间 请教用LED做类似警灯的电路电源为12V直流.希望的效果有两种:1.LED为两组,每边有2颗3.2V的LED,一边快闪4下后另外一边再快闪4下如此交替,如警灯一样.2.LED也为两组,其中一组快闪一下,另一组也 请问什么样的女人,才是最美的而且是最完美的 用一两壁相距2m的看哪个指向放在车上,使车以10米每秒的速度运动,实验室,子弹先后射穿两壁,实验测得,两壁上的弹孔沿车的运动方向偏差4cm,计算子弹在100m附近的平均速度 一般将来时的用法?要注意哪些? 最美的女人是谁? 复合函数单调区间咋求 农业产业化经营是什么意思?请说的简单点,书面上的涵义看不懂 我用数字万用表测了一个元件的两个脚的电阻,一次是1M,一次是无穷,这是个什么东西? (1)已知子弹的初加速度为零,末速度v=800m/s,位移s=0.8m,待求量是加速度.(2)求解运动时间t有多个公式可以选择,可选择含有时间t的公式. 如鸟曾散是什么意思啊 直线x-y+1=0在x轴,y轴上的截距分别为? 当黄赤交角变小时,会怎样?说明原因! 我国现行的是省制还是行省制?名称是什么 求直线2x-y-6=0在x轴,y轴上的截距如题 世界上为什么会出现人类~这高级动物? 子弹飞行时做抛物线运动为什么还那么准 祖国童谣有那些? "五万千瓦现象"指的是什么啊? 漫天遨游是什么意思? 请问明朝的国号为什么叫“明”? 孟元老?东京梦华录?中的“瓦子”又名“瓦肆”,它指的是什么? 1.函数f(x)=log3底(mx2+8x+n)/(X2+1)的定义域为R,值域为【0,2】,则m=____,n=____.2.若不等式x+根号下2xy≤a(x+y)对于一切正数x,y恒成立,则正数a的最小值为________ 明英宗和明代宗是怎么回事?明英宗朱祁镇1436年登基,年号为正统,14年后代宗朱祁钰即位,改年号为景泰,8年后又还位给明英宗朱祁镇,这是怎么回事? 高一地理月考应该注意哪些东西 ①满、遍 ②水过满、漾出来 ③没有限制、没有约束选①②③哪一个啊? 明朝怎么还分南明北明怎么回事 英语难题高手来!1.Some pills ________ the nerves and make people feel more relaxed.A.beat upB.developC.work onD.work at满分:4 分2.She does exercises every day to __________.A.be out of shapeB.keep shapeC.keep in shapeD.be shape满分:4 水平射击时子弹运行的轨迹是抛物线 对吗 请说理由 明朝全能大儒,叫〜〜明? 树欲静风而不止,子欲孝而亲不在, 满天遨游的“漫”的意思 明朝吧和明国吧到底是什么关系血色红五月是什么.明国吧都是被明朝吧拉黑的人吗 为什么要拉黑啊 树欲静风不止,树犹如此,人何以堪,这句话的意思? 濒危野生动物保护的等级划分的主要依据是什么 农业产业化的发展过程? 我是位知性女人,40岁,再婚老公大我15岁,将来他能满足我吗?现在还凑合,我怕日后他不中用了我怎么办? 若a是介于√3和√5之间的整数,b是√2的小数部分,求ab-√2的值. 以观沧海的以是什么意思 宋朝瓦肆有哪些项目?具体点.谢谢 一般的枪可以在水中开吗?有没有枪可以再水中开?从水中射出的子弹的速度是否很慢 谁知道City Credit Capital (UK) Ltd这个公司?这个公司是做什么业务的?是否可信?东金联合和这个公司是什么关系? 我是学园林的,也不知道将来中国的园林方面有何发展,希望有见识的人能够为我分析一下. 漫天遨游的漫是什么意思 有了解City Credit Capital(CCC)外汇交易平台的么?我想问一下这个平台和知名的MT4平台在行情K线的起始节点统计方式上有何不同?为什么同一货币对、同一时间标度上的行情显示会迥然不同呢? 我觉得我是个责任心重的人,我很努力很想以后有个好的将来,但工作让我觉得压力很大.有什么解决的吗?谢 子弹打出去后弹头的飞行轨迹是抛物线吗 “了望”的意思是? 句型转换1.we want (six)bottles of oranger juice 对括号内容提问_____ _____bottles of oranger juice do you want?2.i would like (a loog of) rice.对括号内容提问_____ _____rice wenld you like?3.my new like is 286 yuan .对括号内容提 有什么办法可以让更多人来保护濒危野生动物 了望的意思眺望和了望都是登高跳远的意思,但有时了望还有另一种意思, 为什么世界上会人类这种高级动物呢 我们为什么要干预进化,来保护濒危野生动物? 了望是什么意思 日抗议中国4海警船巡航钓鱼岛 遭驻日布伦特油价28日大幅走高鸟叔诉苦称进军海外压力大:两首歌走了日拟购百余无人机监视钓鱼岛美议员:欧洲应“感激”监听保安全美国电视台为“童言辱华”道歉 被指诚朝鲜称将继续发射卫星格副总理当选总统韩承诺彻查干涉选举丑闻 被视为朴槿惠叙利亚提交销毁化武计划第一高人觅得真爱英首宗疑似3D打印枪支案曝光英国爆出首宗疑似3D打印枪支案南非废除与德国双边投资协议中国钢琴家郎朗出任联合国和平使者英国遭遇10年来最强风暴致2人死亡航听俄罗斯人褒贬“免费医疗”被表嫂逐客竟残杀一家五口“避税天堂”瑞士不少银行职员“不敢”美国学者:星巴克咖啡在中国必须贵 否美元对主要货币28日普涨但仍维持低位王儒林任山西省委书记出国读研提升自我含金量图片新闻青岛至西宁列车在青海发生故障无法前行国粹海外遇知音(第一现场)小法:过去八个月一直忍痛进行比赛联合国工业发展组织:准备与新疆政府 官方:热刺签下蒙彼利埃中场斯坦布利意媒:奥斯瓦尔多可能伤退意大利国家队西亚梅里耶·拉图:盼望向新疆介绍汤加天山网专访瓦努阿图共和国驻华大使塞拉伦敦股市1日小幅上涨陆俊和中国足球的“新生” 足坛希望与反赌案狱中人生活:南勇搞研究申请专利前“金哨”陆俊今日出狱 狱中拒看任何普京:基辅不愿与东部武装进行实质性对第四届中国 亚欧博览会开幕国资委培训央企用新媒体:平常要多说 法国对塞尔维亚一役主裁被无限期禁赛奉节暴雨致20万人受灾 已转移安置群官方:汉堡租借热刺中场霍尔特比
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘