1 在你觉得需要写注释的时候写注释:
首先你需要为方法,类或者模块起个简单易懂的名字
如果必须通读一个方法的代码才能了解它做什么,那么开发人员先要投入大量时间和精力才能使用它。反过来说:只需要短短几行注释说明方法行为,就可以让生活更轻松
在class或者module中上部写注释:
说明这个class或者module的用途,并试着用例子来演示使用方法(一个文件中只应该有一个class,module,除非多出的那些类非常简短)
2 通过编写高内聚,低耦合的类,实现关注分离
简单的面向对象分析
oop的原则
1 开闭原则(OCP)
禁止为修改而关闭
允许为扩展而开放
通常来说:一旦有了有效的类并且在使用它,你就不会想要动他,除非有必要。但是记住,改变是软件开发中的一项不变的真理。使用ocp,我们允许通过扩展而改变,而不是回头修正你现有的程序代码。子类能增加并扩展基类的行为,而无需弄乱已知有效且让客户高兴的程序代码
扩展其他类并不是ocp的唯一方法。例如:假如你在类中有一些private方法,那些方法就是禁止为修改而关闭,没有其他程序代码可以弄乱它。
但你可以增加一些以不同方式调用这些private方法的public方法。你正在扩展这些private方法的行为,而无需改变它们
2 不自我重复原则
通过将共同之物抽取出来并置于单一地方来避免重复的程序代码
次数是3
3 单一职责原则
你的每一个对象都只有一个改变的理由
在良好的应用程序里,一个类只做一件事且把事情做好,并且没有其他类共同分担此行为
4 liskov替换原则(LSP)
子类型必须能替换父类型(否则,当引入新的类之后,调用代码必须经常评估并修正,而且,你也让契约不一致了)
能快速响应需求变化才是好的软件
模式的原则
1 隔离变化之物
2 针对接口编程,而不对实现编程
if is_car
my_car = Car.new
my_car.drive(200)
else
my_plane = AirPlane.new
my_plane.fly(200)
end
my_vehicle = get_vehicle
my_vehicle.travel(200)
3 组合优于继承(汽车)
4 委托(链接和聚合)
3 代码复审
A -》 B
一段时间后
A -》 C
让别人审核自己的代码,但是别人是不固定的
4 测试驱动开发
先用它再实现它
消除那些还没有编写的类,这会很容易简化代码。相反,一旦你已经编写了代码,也许会强迫自己保留这些代码,并继续使用它
让你的测试作为你的代码的第一个用户
5 度量真实的进度
我们不应该去计算工作量完成的百分比,而应该测定还剩下多少工作量没完成。如果你最初估计这个任务需要40个小时,在开发35个小时后,
你认为还需要另外30个小时的工作,那就得到了很重要的度量结果(这里诚实很重要,隐瞒真相毫无意义)
6 什么是完成
1 写完
2 测完
3 交付完
在要求时间的时候还要为意外考虑(容错机制,避免在压力中开发),而意外是不可预估的,我个人是一切顺利的时间 * 1.5
7 开发时的注意事项
不要让瀑布思维侵蚀迭代项目
需要强调的是:瀑布思维仍然时常侵蚀着迭代项目。“让我们在开始编程前编写完所有的测试“,或者“让我们在开始编程前完成全部设计“
变更对于软件项目是永恒的,之所以用迭代,最常见的情况是:“不错,这是我要求的;但现在我试用过后,发现和我现在真正想要的有一些差异。“
这种不错……但是的过程并不是失败的标志,与之相反,早期频繁地在不错……但是中循环,正是改进软件和发现什么是真正有价值需求的途径
所有的大型系统都非常复杂,因此没有一个人能完全明白所有的代码。除了深入了解你正在开发的那部分代码外,你还需要从更高的层面来了解大部分代码的功能,这样就可以理解系统各个功能块之间是如何交互的
需要让团队其他人了解你负责的代码架构和你当前的工作进度。帮助团队识别是否在某些东西上有重复劳动而耗费精力,或者是不是某个问题有人已有现成的解决方案。所以每日立会是必要的,立会上要注意细节。例如:“我正在开发登录页面“就不够详细。要达到“登录页面目前接受guest/guest作为登录用户名和密码,我今天会连接数据库来做登录验证“,这样的详细程度才行。同理,changelog也是必要的。重大的提交,必须有详细的提交信息,方便别人了解你的开发情况和代码复查
8 专家的态度
如果你没有犯过任何错误,就说明你可能没有努力工作
没有任何计划在遇敌后还能执行,所以,改动计划,不一定是坏事。但是做计划还是有必要的。即使初始的设计到后面不再管用,你仍需要设计:“计划是没有价值的,但计划的过程是必不可少的“。在设计过程中学习是有价值的,但设计本身也许没有太大的用处
如果一个团队成员误解了一个需求,某个部分的架构,或者最近一次会议做出的决定,那么也许意味着其他成员也有相同的误解。要确保整个团队尽快消除误解
防微杜渐,不要容忍破窗户
脱离实际的反方观点会使争论变味。若对一个想法有成见,你很容易提出一堆不太可能发生或者不太实际的情形去批驳它;再者,你基本无法赢得争论。通常,有个好技巧:引导性地提出一个疑问,让他们自己去意识到问题。
9 系统分析
聚集在那些表示系统本质,最具有商业价值,和最具风险的功能上
在项目架构阶段,你所做的每一件事情都应该减少项目的风险
假如你不需要用例的所有细节,编写详述软件能如何被运用到的场景可帮你快速搜集好需求
分享到:
相关推荐
生活随感.doc
本项目是一款基于Html构建的编程语言知识库设计源码,汇集了Go、Scala、Python、Rust、JavaScript、TypeScript、C、C++、Java...这些资源涵盖技术文档、读书笔记以及个人随感日记等多个方面,适用于开发者查阅和学习。
描述快乐的随感散文作品.doc
在IT行业中,Java是一种广泛应用的编程语言,尤其在企业级应用和服务端开发中占据着重要地位。本篇文章将深入探讨如何使用Java调用Web服务,特别是WebService,这是一种基于SOAP(Simple Object Access Protocol)...
《宋庆龄故居的樟树》随感.docx
描述快乐的随感散文作品精选.doc
这篇“初中语文文摘文苑随想随感随笔”虽然不属于典型的IT知识范畴,但它可以关联到语文教育、文学欣赏以及个人情感表达等多个方面,这些元素在日常生活中,尤其是对于青少年的成长有着重要影响。 1. **语文教育**...
金属材料与热处理_之教学随感.pdf 关于金属材料的教学指导
很抱歉,但根据您提供的信息,这似乎与IT行业或专业知识点...如果您需要关于IT行业的知识,例如编程语言、网络技术、数据处理、软件开发或者任何其他相关主题,请提供更具体的信息,我将非常乐意为您提供详尽的解答。
【标题】中的“图书馆志愿者随感”指的是作者参与图书馆志愿服务后的个人感悟,而【标签】“技术”可能是指在组织和执行志愿服务过程中所涉及的技术层面,如团队协作、时间管理等技能。 【部分内容】中,作者提到的...
这篇《学琴随感》的作文反映了作者对音乐学习的热情和对坚持的深刻理解。文章中,作者在发现乐理知识的教学资源后,投入了大量的时间和精力进行学习,体验到了新知识带来的兴奋和乐趣。这种对新鲜事物的好奇心和兴趣...
【标题】: 提升英文论文写作质量的策略与技巧 【描述】: 英文论文写作不仅要求准确严谨,还需要能够吸引读者,通过讲述一个引人入胜的故事来阐述问题背景、研究动机、挑战、解决方案以及验证过程。...
这首《念奴娇·过港珠澳大桥随感》是由李泽友创作的一首词,通过对港珠澳大桥的描绘,展现了中国在工程技术上的卓越成就和对于传统文化的敬仰。港珠澳大桥作为世界最长的跨海大桥,连接香港、珠海和澳门,是现代科技...
关注信息贫富——“让信息通信技术惠及残疾人”主题活动随感.pdf
在这篇生活随感作文中,作者通过亲身经历以及对生活细节的观察,传达了对努力和付出的深刻理解。文章中体现了几个重要的知识点,这些观点和经验无论是在学生的日常学习还是在职场人士的工作中,都具有一定的启示和...
"教师暑假读书笔记-读《大数据》随感" 通过阅读《大数据》,我发现了许多与教育教学相关的知识点,以下是我的读书笔记: 首先,让我们来探讨第一个故事:街头警察的创新传奇。在这个故事中,我们可以看到数据分析...
这篇文档是一位教师的教学随感,主要讨论了如何在教授《爬天都峰》这篇课文时,让学生真正成为学习的主人。教师强调了学生自主学习的重要性,并分享了在教学过程中的体验和反思。 在教学过程中,教师采取了让学生自...
从提供的文档内容来看,主要知识点集中在对一个城市的印象随感描述,尤其关注了城市工业化区域的特点、城市印象与期待的对比、以及城市生活中的消费水平和交通状况。下面将详细展开这些知识点。 1. 城市的第一印象...
这篇“城市随感作文400字”实际上并不是与IT行业相关的专业知识,但它提供了一种观察和描绘城市的视角,这可以被理解为一种人文思考,而人文素养在信息技术领域同样重要,因为它能培养创新思维和情感理解。...
2019_2020学年高中语文第三单元随感哲思10短文三篇课时练习含解析新人教版必修4