好程序员需要主要的几个地方

来源:互联网 发布:怎样找淘宝客 编辑:程序博客网 时间:2024/04/28 10:59

学习
1
学习OOP时要结合OOD,OOA,否则是很难理解什么是面向对象设计。
2
了解UML
了解设计模式
学习开源项目
项目比较大时,可以先用UML作图,问题不清楚时,也要先画图。比较清楚解决方案时,可以先写测试用例,这样也可以把类的结构考虑清楚,自动解耦。
多看书,多去好的BlogMsdn,少去论坛
7
数学是计算机的基础。
8
学校学习的计算机基础课是你不能忘记的。
9
每天要看些英文的资料,至少要保持住自己的英文水平。
10 合理的安排时间,做好计划。   

TDD

如果要成为负责,高效的程序员一定要写测试用例,否则维护代码时,需求改变时就是你后悔的时候。

一、对复用你的代码的人、维护你的代码的人都是莫大的财富,如果没有测试用例,即使代码的结构很完美,耦合性很低,维护起来也是很难的。原因是,没有方便的测试方法,读代码要比读测试用例费力的多。
二、对自己以后的维护也方便。如果没有测试用例,随着时间的流逝,遗忘的会很多。即使自己维护,也是头疼的事情。更要命的是会产出对维护的恐惧和惰性。
三、测试用例一定要在写代码前写,不要试图为旧代码添加测试用例,那是不可能的。

 性能

除非看到性能受影响的迹象,否则不要过多考虑性能问题,通常架构的合理性要比性能重要,实现的简单性也比性能重要。改进性能的前提:
一、性能影响到程序的运行,或者客户对性能有严格的要求。
二、有证据表明此项改进能显著提高性能。
三、改进性能是比较简单的工作,如果改进很难实现并且改进后性能提高也很少就不应该花费时间在性能的改进上面。

态度

一、bug要发现一个解决一个,不要让它过夜。自己不要有侥幸的想法,事情总会向坏的方向发展。

二、语言只是工具,不要认为任何一种语言是最优的,只有最合适的。 

项目

开始项目前,一定要仔细考虑自己的能力,不要盲目答应项目的完成时间,如果时间紧就要明确的告诉上司,项目不能完成,要求加时间,否则匆匆的开始一个项目,结果只能是不能完成的任务,推倒重来会浪费更多的时间。

XP提倡的没有计划是不可能的,最少要有个简单的规划,太细了也是浪费。

项目中最重要的是人,如果大家都没有了动力,所有的一切都是无源之水。


设计以及实现细节

如果对某种模式还不是太熟悉,就不应该在项目中套用,而应该通过重构回归到模式。关于设计和设计模式:
一、    应用设计模式的目的是封装变化点,用以达到两个目的:在需求变化时通过简单的修改,能使旧的设计适应新的需求,增加了程序的灵活性;改进系统的设计,降低耦合提高复用度。要实现这种灵活性,通常要牺牲系统的性能,并且加大编码的难度,因此如果系统是稳定的,就没有必要应用设计模式,那样不会带来任何好处。
二、    要正确认识耦合性,完全解耦是不可能的,因此选择设计模式时要选择合适的,如果稍大的耦合不会带来问题,就应该选择轻量级的模式,虽然它的耦合度较大,但是它比重量级的模式易于实现和维护。合适的就是最好的,过犹不及。
三、    要重视依赖关系,依赖不能形成环,也应该尽量减少传递。
四、    要注意UML图的粒度,细节的东西应该用代码表示而不是图,同样如果要考察程序的逻辑是否合理也不应该通过读代码而是要通过图,我认为这是应该用图还是代码的分界点,再比它高的层次,都应该有图形的表示。
五、   要注意类之间的依赖,尽量做当把类从一个项目移动到另一个项目时,此类可以重用,而不必修改此类的内部实现。要如此,首先就应该保证:除了参数不应该允许其他依赖关系存在。
六、异常的抛出点要认真考虑,该被调方法抛出的,就不要把此异常扩散到每个调用者,而让调用者抛出。
七、每种UML图都有他要着重表现出的东西,还有他能表现但他不能完美表现的东西,因此不要试图用一种图去表现应该用另一种图表现的内容。
八、要保持代码、注释、UML的一致性。
九、   不要在正进行的项目中加入未来的需求,不要考虑适应未来需求的可扩展性,需求的变化永远要比你想象的剧烈,通常那种需求永远也不会被用到,这样做只能加大维护的难度和实现的复杂度。正确的做法应是,抽象出需求,提炼出抽象的接口,如果未来的需求满足这个接口那么你就是幸运的,否则也没有什么大的损失(DIP)。
十、   设计接口时一定要慎重考虑,接口一旦确定,就应该保持稳定,即使接口方法的参数也应该稳定(WebService)。
十一、   如果一个项目是几方合做的,最好能定义好接口,并且有虚拟的实现,这样集成的时候会少很多问题。
十二、   任何项目,都要先把框架搭好,然后再实现细节。
十三、   变量名应该有明确含义,而不要选用没有明确含义的名词。如:变量命名为date是不合适的,要用CreateDate等有明确含义的名字代替

十四、能用强类型,不要用弱类型。让错误尽可能的在编译时暴露。

调试

程序总会出现Bug,因此调试对程序员来说特别重要。

一、VS2005VS2003的调试环境要好的多,不仅方便而且能看到更多的信息

二、VS2005中,我觉得最常用到的调试窗口是:监视、局部变量、调用堆栈、命令、输出这几个是通用的窗口;反汇编、内存、寄存器在分析内存信息,代码细节的时候要用到;线程、模块、进程在分析信息的时候也会用到;调试脚本的时候会用到脚本资源管理器。

因为VS2005有自己的web服务器,如果要用IIS触发调试就应该设置为“使用自定义服务器”。

如果想看到更多信息可以加载SOS调试扩展。 

选书和文章

好书是不需要太多例子的,例子只起点睛的作用,如果一本书例子很多只有两个原因:

一、纯粹是例子书,如××几千例,没有什么可读之处。

二、作者不能用语言把自己的想法表达清楚,只能用例子凑数。


有用工具软件

一、UltralEdit,文件比较,排序,正则表达式

二、Reflector,查看.net类的内部实现方式,学习微软的实现。Remotesoft,更强大些。

三、Nunit,单元测试。

四、Log4net,日志记录工具。

五、RegexDesigner,正则表达式分析工具,小巧实用。RegexBuddy,功能更强大

六、CodeSmith,代码生成工具。

七、IlDasm,反汇编工具

八、Nhibernate,ORM绝对是大势所趋,他让数据操作变的方便,灵活。目前.net所缺少的就是一个有权威性的ORM产品。

九、XMLSpyxml编辑工具,可以调用Webservice

十、Ndoc,文档生产工具

十一、       EthrealTracePlus抓包工具。

十二、       EAUml工具

十三、       SOS,调试扩展

 
原创粉丝点击