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

论程序员的自我修炼

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

原生广告:移动推广的热门新宠 隐私之战:金山手机毒霸宣布开放安全检测平台 世界人民的头上有张监控大网——Xkeyscore 美国“监控门”情报收集系统 X-Keyscore 技术揭秘 为啥REST如此重要? 并非PHP Frameworks而是WordPress让PHP更加流行! Twitter Bootstrap深受开发者喜爱的11大理由 假如3D打印机也有“撤销”键 大数据的游戏运营:不能起死回生,只能锦上添花 15个步骤创立技术公司,并收获千万用户(一) 红帽再发力 将MongoDB整合到Linux系统 ZestFinance:前谷歌CIO创立的机器学习+大数据分析公司 7月份浏览器份额:IE仍最受欢迎 Chrome成最大赢家 2013 Q2 Android手机出货量再创新高 iPhone三年来新低 如何一个人打造日PV百万的网站架构——SDCC 2013讲师曹力专访 【一周观察】动辄9位数以上的投资,云数据中心缺口巨大! 硬件创业到底有多火? 知名网站分享:PHP代替Perl,Redis置换MySQL,日处理过亿PV 涨姿势了:Unity CEO聊如何玩转开发者生态 移动周报:再造Ruby女神背后的开发故事 超算什么都弱爆了:模拟一秒人脑计算需要8.3万处理器40分钟 人才短缺不能只靠等 看分析人士给硅谷的3个方案 九个相当有吸引力的WebGL演示 巨人网络朱永明谈运营:游戏就是社会的缩影 Dragon Forged创始人:不想当空军的开发者,不是好程序员 创业者应该怎样走出idea迷宫? TIOBE 2013年8月编程语言排行榜:Java领衔称霸 Gartner新报告:为改善风险管理,云服务合同需要更透明 没有银弹:探讨 Java 8 新增特性的优缺点 SDCC 2013议题更新 Pinterest架构实践、推荐系统、微信应用... 拥有82944个处理器的超级计算机 40分钟才能模拟一秒人脑活动 jsp调用javabean需要做那些步骤啊?在线等待,马上接贴! 有重庆的考程序员的吗?重庆什么时候考(留下你的联系方法) 立项建议书 vb画圆 立项建议书 请教关于数据库的问题 如何信达地翻译这句话? 请大家 推荐一些比较难的书(散分) 请问那里有isa server的中文教程下载?谢谢。 高手助我! 在VB中,用SQL语句时,怎样用函数。 图标在上网的时候改变,请问这是怎么回事? 编一个电话簿程序都需要哪些控件? powerbuild 在社会上用在那些方面 ? 请教一个问题:在word中能实现双面打印吗? 关于写文本文件的问题 怎么改密码啊?! 哪里有pb的电子图书下?在线等待 高分求avi播放器源代码(不使用控件) cab文件 关于crystal report export 的问题 XML带的?是什么?? 如何实现数据库CLIENT的用户之间的交互,即一旦一个用户更改了某项数据,其它用户能立刻知道,并能作出反应? 没有控制面板如何设置Delphi快捷键? 连接上网成功后会产生什么事件或者消息? 怎么定位treeview和listview? 哪里有DEIPHI5程序员参考这本书可以下载? ds,dt,dv数据绑定的时候,那个是最佳选择? 谁有串口通讯的控件comm32.zip,spcomm.zip,async32.zip,commst.zip? 游戏开发需要具备哪些知识? 在DELPHI中怎么命令调用外部exe文件?1 java运行环境参数 关于Apache 1.3和Tomcat 4.01结合使用的问题,搞不定了,请帮帮忙! 十万火急?请进!!! IBM 有自己的jkd吗? 哪位北京的朋友能帮我一下,给我妹妹找点事做 在DELPHI里面有没有读取时间的函数,其精确到毫秒的??急救。 小程序改错?急!!!请大家帮忙!!! 问题很小,给分不少 高手请进!!!!???急急急急急急 3个菜问题,请高人给答? 数据存储怎么写事件 局域网中如何隐藏网上邻居? 为什么这个api在w2k下没效果,而在wxp下可以。 求助,急需isa server的教程。请各位帮忙提供下载,谢谢。 win2000的非常奇怪的问题 linux的安全 怎样使DBmemo在输入文字多的情况下自动出现上下滚动条呢? ObjectARX编程问题 又遇高手 对于处理大数据量的应用,该使用何种数据库? (创新题)下列各项描述中,说明绿色化学的特点的是( ).下列各项描述中,说明绿色化学的特点的是( ).①充分利用资源和能源,采用无毒、无害的原料②在无毒、无害的条件下进行反应, 硝酸能使品红溶液褪色吗 生态环境遭到的破坏 绿色化学产品有什么特征求答案 稀硝酸能使品红褪色么?比如将同物质的量SO2和Cl2同时通入含有品红的硝酸钡溶液,会看到的现象,一定会有BaSO4沉淀,但还有没有红色?答案是有红色的,稀硝酸难道不能使品红褪色么?我怎么觉得 生态环境遭到哪些破坏?8点半之前要用!最好多来几个 烛焰通过凸透镜恰好在光屏上形成一个缩小\倒立的像,保持透镜位置不充,把烛焰和光屏的位置对调一下,则A.仍能呈现一个缩小\清晰的像 B.将能呈现一个放大\清晰的像 C.光屏上不能呈现 硝酸可以使品红溶液褪色吗一道题目里的意思是不能,但是硝酸氧化性很强为什么不行?还是因为浓度的关系?题目里加的只是几滴.谢了一楼的不要胡说了,次氯酸,过氧化钠等等强氧化剂都可 目前生态环境遭到破坏有那些原因? 电动车防盗器哪个牌子的好?价格多少? 烛焰通过凸透镜恰好在光屏上得到一个倒立缩小的像,若保持透镜的位置不变,把烛焰和光屏位置对调一下,则:A、光屏上仍呈缩小的像B、光屏上不能成像C、光屏上呈放大的像D、光屏上无像, 自吸排污泵哪家的质量好? 京沪高速共路全长大约1200千米.一辆大卡车和一辆小货车分别同时从北京和上海出发分别同时从北京和上海出发,相向而行,经过6小时在途中相遇,如果大客车的速度是小客车的11分之9,两辆车的 当烛焰离凸透镜30cm时,在凸透镜另一侧的光屏上可得到一个倒立、放大的实像,该凸透镜的焦距可能是?说出范围就行了 液下排污泵的厂商 圆柱和圆椎的计算公式(简单点啦)体积,面积都要 烛焰通过凸透镜恰好在光屏上得到一个缩小倒立的像,若保持透镜位置不变,把烛焰和光屏的位置对调一下,则光屏上( ).A.仍能呈现一个缩小的像 B.将能呈现一个放大的像 C.不会呈现放大或缩小 绿色化学的特点之一是零排放二氧化碳和氢气反应只生成一种产物就能实现零排放 求圆、圆锥、圆柱的计算公式要字母的圆、圆锥、圆柱的全部计算公式 焰通过凸透镜恰好在光屏上得到一个缩小倒立的像,若保持透镜位置不变.把烛焰与光屏的位置对调一下,则我知道答案是成放大的像 可是为什么 移动位置就会在一倍焦距和两倍焦距之间呢 求 若将能效比为⒋0的空调工作1h将比原空调节约电能kw.h 是多少 什么物质和氢气反应能生成co2 6年级上册语文第4单元作文建议书(关于汽车尾气)如果很赞加悬赏!要500字以上 谁知道有没有描写客厅的7言诗句 二氧化碳与一定比例氢气混合生成什么?只需一种就可以实现零排放的 对减少汽车尾气的合理建议必须合理至少三条 描写风很大的句子 将蜡烛放在距离凸透镜30CM的地方,在透镜另一侧的光屏上,有蜡烛清晰放大的像,该透镜的焦距可能是A 20cm B 15cmC 10cmD 5 cm HF 水 氨气的溶沸点高低顺序是什么? 一台普通挂式空调多少钱,每小时耗多少度电 把蜡烛放在里凸透镜远大于2倍焦距的地方,在光屏上出现了明亮,清晰的烛焰的像,完成光路图(无视掉我画的) 为什么氢化钠沸点比氨气高 1.写一种事物,但是打比方的句子 2.把物当成人来写的句子 3.在客厅挂一幅对联是什么对联 二氧化碳和氢气反应,只生成一种产物就能实现"零排放",这种产物是什么? 关于绿色化学零排放的绿色化学”能实现零排放(即反应物中的原子利用率达到100%).CO2和H2在一定条件下按照不同的比例可以合成不同的化工原料.根据零排放的要求,以CO2和H2合成的下列物 描写雨下的很大的句子 现在,街上有大量的汽车,这些汽车排出的尾气污染了空气,破坏了环境,你的建议是什么 绿色化学如何理解 再生活性炭如何辨认 凸透镜焦距11cm,蜡烛在距凸透镜30cm处,在光屏上获得清晰的像后,在蜡烛于透镜之间再放一个凸透镜为了得到清晰的像,光屏应向(. )透镜方向移动.括号内填''靠近'' 或''远离''. 为什么? 物质的相对原子质量怎么求,除了("质子数+中子数"外) 如何辩别活性炭是原生炭还是再生炭?从外观上有方法简单的分辩出来吗?两者有什么区别? ZMOMD 倒车摄像头,五线2红线2黑线1黄线,怎么接? 东方明珠电视塔高多少 什么是汽车行驶的平顺性?影响汽车行驶平顺性的主要因素有哪些 在城市规划中,红线,蓝线,黄线,白线等,分别代表什么? 质子数与中子数相等的物质rt属于短周期的元素,质子数与中子数相等的物质 什么是汽车的行驶平顺性 建筑领域中的红线、绿线、黄线等有什么区别,各自的意义又是什么 东方明珠电视塔高多少,宽多少 满载与空载对汽车平顺性的影响 压力锅内部的气压算是大气压吗 活性炭是通过什么方式去味的?活性炭能把房间里的甲醛等味道去除吗? 高锰酸钾会不会伤害鱼? 过热器疏水阀有什么作用? 颗粒活性碳 方式形成颗粒活性碳中颗粒是通过什么样的技术形成的?我要快速知道答案!谢谢! 有哪些使品红溶液褪色的物质!他们的原理是什麼? 绿色化学的兴起及其特点 HCl 能使品红溶液褪色吗、 全球变暖的后果是什么
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘