- 浏览: 958461 次
- 性别:
- 来自: 魔都
文章分类
- 全部博客 (745)
- MultiThread (19)
- My Plan (118)
- JavaBasic (61)
- MyInterview (104)
- InternetTechnique (5)
- ProjectConclusion (1)
- Maven (5)
- MogoDb (5)
- Hadoop (11)
- Memcached (6)
- TechniqueCollect (1)
- Ibaits (1)
- Android (34)
- ItLife (40)
- Tree (2)
- ProjectArchitect (7)
- Open Source (3)
- liunx (5)
- socket (8)
- Spring (27)
- DesginPattern (35)
- WebBasic (13)
- English (13)
- structs (1)
- structs2 (2)
- Oracle (17)
- Hibernate (2)
- JavaScript (4)
- Jdbc (1)
- Jvm (15)
- Ibatis (1)
- DataStructures (13)
- Https/Socket/Tcp/Ip (3)
- Linux (4)
- Webservice (7)
- Io (2)
- Svn (1)
- Css (1)
- Ajax (1)
- ExtJs (1)
- UML (2)
- DataBase (6)
- BankTechnique (3)
- SpringMvc (3)
- Nio (3)
- Load Balancing/Cluster (3)
- Tools (1)
- javaPerformanceOptimization (8)
- Lucene(SEO) (1)
- My Think (80)
- NodeJs (1)
- Quartz (1)
- Distributed-java (1)
- MySql (7)
- Project (4)
- junit (4)
- framework (1)
- enCache (1)
- git (2)
- SCJP (1)
- sd (1)
最新评论
-
lkjxshi:
你都这水平了还考这个证干嘛
SCJP 认证考试指南 -
钟逸华:
问的真多
百度java开发面试题(转) -
zuimeitulip:
觉得我就是这样的,从小阅读量就很少,导致现在的读的速度非常慢, ...
让读书成为一种习惯 -
DDT_123456:
我觉得你是不符合要求。问你hashmap的那个问题,你那样回答 ...
阿里面试2(转) -
jingjing0907:
刚刚写了很多读过此博客的感受,竟然没有发上去,以为我注册账号还 ...
让读书成为一种习惯
在想到这个问题的时候,很多童鞋都会笃定回答:我会先构思程序大体的框架,接着就开始写代码。
A:难道你就不将你的构思巨细文档下?
B:一般的编程任务不会太难的话,我觉得YY也很可靠,可能更高效。
A:为什么这么急的写代码?
B:手痒~~
先小说下YY。YY即意淫,这里意即写代码时,不草稿不文档,脑瓜里天马行空,心猿意马。
我不确定是不是大多数的Coder都这么做?!但我周遭的许多同学确实是这么说的做的。首先,很可能是程序猿对自己的YY思维太过自信,再者就是急功近利——想要一睹自己在写完代码后『F7』+『Ctrl+F5』(注:VS2008 C++的生成解决方案和运行的快捷键,笔者经常在写完代码后,习惯这样快速运行)的运行结果和预期的一样。基于这种心态,我们越想去劈劈拍拍敲代码。
在这学期,我们课程安排里有软件工程这一门,说的就是软件从无到有的一个过程,其间包括提出问题,需求分析,详细设计,软甲架构,编码测试,接着可能就是RTM。但是,笔者似乎对软件工程这门课程很有偏见,以为跟我的感觉,它太过教条化,与自己先前写代码的方式违背。先说说教材,我们学校选的是《软件工程导论》XXX版,随口问了身旁的一位小哥,对这本书什么评价,答曰:“不好!”问为什么还拿来当教材?答曰:“上面印着XXXX精品教材。”笔者想不明白,为什么一本在自由书市无人问津的书籍,还会出第N版(读重音),还在各高校这么有市场。存在即合理~~呵呵。。。
在前几天,开始看《代码大全了》,含金量对得起它的厚度。而它的讲解真教人拍手称快。这样的书才能被奉为“机经”,被程序猿收藏于案头架上。当然,代码大全并不是完整的讲述软件工程,毕竟它只在软件架构部分“事无巨细”。而想要完整讲述软件工程这一学科,它的每一个阶段都可以是一本或几本书。
扯的有点远了。任务越是庞杂的时候,零零碎碎的问题就越来越多,而且缺乏『高层设计』和『底层设计』的迭代设计过程,这些问题会越来越凸显,而且一盘散沙,眼花缭乱,于是很可能前功尽弃,重头再来一遍,又或者破罐子破摔。思维空间似一张草稿,范围有限,不容的我们天马行空,欲在狭小的范围描述一个庞杂的系统,显得有些吃力,这时候文档就越发重要了。如果不以为然,要么恭喜你,你是天才架构师;要么XX你,项目经验太少。当有项目经验过后,会发现『YY』显得苍白无力。
童鞋们可能牢骚:这些烂大街老掉牙的东西!是啊,明白这些的人太多了,笔者是其中之一,可忍耐非常脆弱,不费吹灰便可被『噼噼啪啪敲键盘』的欲望击垮。所以,如果读者这么不幸与读者有类似的经历的话,当下要做的就是『禁欲』。
不是每个人天生都是天才架构师,都能鸟瞰软件系统,一来就『噼噼啪啪』干起来。也许这一次的设计不是那么的完美,但如上所提到的,『高层设计』和『底层设计』的迭代设计的过程会让你不断的发现其中的瑕疵,完善整个系统。好吧,再退一步讲,即便经过设计的系统还是很不合理的系统,那你也能很快体验到设计后『奋笔疾书』敲代码的快感,关键是意识到这问题的时候,学习才能提高了。
一个设计合理与否的系统很快会自己给出答案。一个显而易见的方法是,当需要更改的时候,系统需要在多大的程度上被修改。这里提一个蹩脚的比喻:
程序猿==医生,
客户有问题需要解决,过来找你。你是医生,他是患者。
你要经过望闻问切,找到患者的病因(需求分析)
针对病因,找到适合的治疗方案(合适的技术)
而当医生宣布你已经无药可救的时候,很明显系统有问题。
学计算机的,对IT稍有些狂热的人,都会突发奇想做自己的应用,而且这种想法经常有,注重软件设计的机会,将大有裨益。阅读《代码大全了》那会,一个很有趣的地方:说要把界面和数据逻辑分开,而『更换界面的需求(譬如将可视化变为较为容易测试的console)』能回答界面和数据逻辑分开与否。这一提示能够让我们日后在设计的时候时刻提高警惕——如果真的有需求要将可视化界面更换为console,数据层和业务逻辑层能否不动声色。
最后,『真的程序员,敢于直面惨淡的重构,敢于正视淋漓的需求。』,这句话某中意义上是YY高手不思进取,对现实世界的妥协。别急着『噼噼啪啪』,设计下,文档下,或许不至于惨淡。
笔者没有软件工程系统的学习经验,上述文字自己的所感所想,欢迎斧正。
本文完 2012-11-18
发表评论
-
2015年4月份学习计划
2015-04-02 22:52 10642015年4月份学习计划 第一周(4.2-4.5) ... -
CVCV
2015-03-02 18:01 1018menards Menards是美国第三大家居装饰和用品 ... -
20件程序员必须知道的事
2015-02-28 17:29 891我最近看了一本叫做《the 97 Things a Pro ... -
卓越程序员和优秀程序员有哪些区别?
2015-02-28 09:51 871卓越程序员和优秀程序 ... -
为什么有些人工作是痛苦的?
2015-01-07 16:06 709身边一个朋友,每天工作内容多但是都不复杂,但都是些特别容易出 ... -
2014年12月份学习计划
2014-12-21 21:45 762第三周(12.22-12.28) 结合官网来看 12 ... -
11个小技巧提高程序员工作效率,小习惯更重要(转)
2014-12-06 22:18 957“吃苦耐劳”真的是优良品质吗,与你怎么做相比,老板们应该更关 ... -
箴言(转)
2014-11-05 00:14 5001、每天晚上12点之前睡觉,早上8点起床 2、努力学 ... -
2014.11月份学习计划
2014-11-05 00:13 591hadoop 学习计划 hadoop中级 (11.5 ... -
22条日常技巧助程序员提高工作效率、节约时间(转)
2014-10-28 14:14 786我一直在测试和调整各 ... -
浅谈、男人需要完成的事! (转)
2014-10-28 14:13 8701,事业永远第一 ... -
提升程序员身心健康和工作效率的装备有哪些?(转)
2014-10-22 12:21 774曾经有很长的一段时间一直在学习和探索提升工作效率& ... -
优秀软件工程师必备的7大特性(转)
2014-10-22 10:23 841不是每一个程序员都 ... -
程序猿的十一条浮躁表现
2014-09-15 23:40 7251. 不能静下心来坚持读完一本有深度的书。 2. ... -
30岁后你会站在哪里?(转)
2014-06-08 20:15 904http://www.oschina.net/ques ... -
Java互联网工程师要具备哪些技能(转)
2014-02-26 20:58 8711.Core Java, 就是Java基础、JDK的类库,很 ... -
如何做到早起一小时?(转)
2014-02-25 22:03 903早起是个不过时的话题 ... -
中医教你如何睡觉
2014-02-21 22:40 740中医教你如何睡觉人一个晚上不睡,一百天都补不回来。睡觉的诀 ... -
学会成长(转)
2014-01-04 23:49 930人不成熟的第一个特征:就是立即要回报 他不懂得只有春天播种 ... -
2012年回顾
2013-06-30 22:41 10002012年回顾 2012年过去了,回顾一下2012年主要做 ...
相关推荐
10. **测试驱动开发(TDD)**:在编写实际代码之前先编写测试,确保代码从一开始就考虑到了测试需求。 【常见的不好测试的代码】: 1. **使用静态方法或单例**:静态方法和单例很难替换或模拟,导致测试困难。 2. **...
6. 绘写通功能,可以写字、绘画; 7. 软件界面、功能简洁明了,易学易用,极易上手,尤其适合不熟悉电脑的用户。 8. 识别:①中文简体②中文繁体③日文④韩文⑤英文⑥数字; 9. 支持连续书写。 三、应用环境: 1. ...
提高写代码的效率(编程篇) 在编程领域中,提高写代码的效率是每个程序员必须面对的挑战。本文将总结如何提高代码的书写效率和练习方法。通过分析常见的编程错误和解决方法,我们可以总结出两大关键点:养成好的...
可以使用`window.onload`或`DOMContentLoaded`事件确保在执行代码前页面已准备好。 ```javascript window.addEventListener('DOMContentLoaded', function() { // 在这里执行特效代码 }); ``` 7. **浏览器...
为了确保代码的可读性、可维护性和团队协作效率,遵循一套统一的代码规范显得至关重要。以下是对Java编写代码规范的详细解读: 1. **命名规范** - 类名:采用大驼峰命名法(每个单词首字母大写),如`ClassName`。...
【实践与技巧】写好链表代码需要时间和大量实践。投入时间反复练习,直到能够熟练编写无错误的代码,是提高技能的关键。同时,掌握以上提到的指针理解、避免指针丢失和使用哨兵节点的技巧,也能帮助我们更轻松地处理...
在深入探讨如何轻松编写链表代码之前,让我们先简单回顾一下链表的基础知识。链表是一种线性数据结构,由一系列节点组成,每个节点包含两个部分:数据和指向下一个节点的指针。链表因其动态存储性质而在实际应用中...
在这里,我们将深入探讨Java中解决读者写者问题的策略,并分析提供的代码可能存在的一些问题。 读者写者问题的核心在于:读者不互斥,可以同时读取数据;但当有写者在写入数据时,必须独占资源,即不允许任何读者或...
**写好代码的十个秘诀** 在编程领域,代码质量至关重要,因为它直接影响到软件的可读性、可维护性以及性能。微软中国研究院分享了“写好代码的十个秘诀”,旨在帮助开发者提升编码技能,实现更高效、更优雅的编程。...
Python3.x+Pyqt5实现界面和逻辑分离案例01_自己写的,有UI界面源代码(更正之前的错误代码)。
-PETiger是什么? 是一款快速代码混淆工具,中间层加密,也就是说在使用PETiger之前可以进行加密 压缩,然后再使用PETiger加密保护...把自己写入的DLL代码加入到要保护的文件中,可以自己写反调试代码,或者完善功能。
【USACO大牛写的前三十个的代码】这个资源是一个集合,包含了由USACO(美国计算机奥林匹克)竞赛中表现出色的程序员编写的前30个代码实例。这些代码是针对初学者设计的,旨在帮助那些正在探索数据结构基础知识的人。...
《写给程序员的数据挖掘实践指南》源代码是一个与大数据相关的学习资源,主要针对希望深入了解数据挖掘技术的程序员。数据挖掘是大数据分析的核心部分,它通过使用各种算法和技术从大量数据中提取有价值的信息和知识...
【标题】"我的个人代码收藏(更新)"指的是一个个人收集的代码库,其中包含了作者在.NET框架下使用C#编程语言编写的代码片段或项目。这个更新版本着重解决了之前版本中存在的问题,以提高用户体验和实用性。 【描述...
在处理“idea中git更新代码到本地之后自己写的代码不见了”的问题时,首先需要理解Git的基本操作和IntelliJ IDEA中的Git设置。 Git是一种分布式版本控制系统,用于跟踪对文件和目录的修改。在IntelliJ IDEA中,Git...
同时,为了避免出现不必要的重叠和绘制异常,可以在每次绘制前清空 Canvas 画布。 实现网页 CAD 绘制任意线的基本思路和代码要根据实际需求进行修改和扩展,比如增加颜色、宽度等属性选择,或者支持多种绘图模式(如...
《自己动手写神经网络》是一本面向实践的书籍,旨在帮助读者深入理解神经网络的工作原理,并通过编写源代码实现自己的神经网络模型。源代码包含了多个关键的文件和目录,如`plot_func.sce`用于绘制函数图形,`...
### 每天写出好代码的5个建议 在软件开发领域,编写高质量的代码是每个程序员追求的目标。良好的代码不仅能够提高程序的稳定性和可维护性,还能够提升团队的协作效率。以下是从给定文件中提炼出的五个关于如何每天...
TDD要求在编写功能代码前写好测试用例,而BDD更注重从用户角度定义系统的预期行为,通过Gherkin语法编写故事或场景。 7. 测试覆盖率:衡量测试充分性的指标,表示被测试代码中有多少比例被测试用例执行过。虽然高...