读代码大全

如何做到优秀的开发实现?

很感谢发部中文电子版的那帮人!就和Java与模式一样,实体书买回来没看多少当收藏了,下载的电子版本却看完了。

代码大全几乎包含了软件生命周期的方方面面,从多方面讨论了软件分析设计实现工作的原则、目标、方法,重点在实际开发实现层面,代码大全告诉了我什么才是规范化,如何做到人与代码最顺畅的沟通,我理解的代码大全的主题是:“优秀的软件设计实现是什么样子?如何做到优秀?做到优秀需要考虑哪些要素?”

设计优秀在于问题域分解和抽象。

实现优秀在于找寻适合自身团队组织的要素共同执行和遵守。

关于设计的主题

用食物链描述软件项目的需求分析、设计、实现过程很精辟,这块可以有很多遐想和牢骚。。。

结构设计
子程序设计、模块化设计的好不好很大程序上取决于系统的结构设计好不好。

设计的层次

一、划分子系统

二、切分成模块

三、划分成子程序

四、子程序内部设计

结构化设计主题
系统的组织、系统将被设计成几个黑盒子、明确定义的子程序和模块、开发设计的策略、评估设计准则、关于问题的明确说明,这是解决问题的指导原则、自顶向下分解、自底向上合成

面向对象主题

通过对实际问题的分析,从中抽象出对象,然后再用程序语言表现它。面向对象的抽象化程度很高。

关键思想

抽象、封装、模块化、层次结构和继承性、对象与类(静态的类与动态的对象)

往返设计主题

设计是一个复杂的过程、是一个“险恶”的过程(托卡马大桥的设计,卡门旋涡、只有先解决它或部分解决它之后才能明确定义出的问题)、是一个启发的过程(为什么非要在经验和信息都不足的情况下草率决定呢?)

怎么解决问题

最重要的原则之一就是不要抱着一种方法不放,如果编写PDL无效,那么就作图或用自多语言写出来,要么就写一小段程序验证,或使用一种完全不同的方法,比如硬算解决法,坚持用铅笔不停地写和画,大脑也许会跟上。如果这一切都无效,暂时放开这个问题,出去自由地散散步,或都想一下其别的,然后再回到这个问题上。如果你尽了全力还一无所获,那么暂时不考这人问题比苦思冥想更快获得答案。最后可以借鉴其它领域中的方法来解决软件设计中的问题。

1、理解问题

问题是什么?数据是什么?条件是什么?有可能满足条件么?已知条件足以确定未知么?已知条件是否不够充分?是否矛盾或冗余?

2、设计一个方案,

设计一个方案。找到己知数据和未知之间的联系。如果不能找出直接联系的话,你可能不得不考虑一些辅助问题,但最后,你应该找到一个解决方案。以前你是否遇到过这个问题?或者是见过与它稍有不同的问题?是否知道与其相关的问题?是否知道在这个问题中有用的定理?看着未知!努力回忆起一个有着相同或类似未知的问题。这里有一个与此相关的你以前解决过的问题,你能利用它吗?是能利用它的结论还是能用它的方法?是否该引入辅助要素以使这个问题可以再用?能否重新表述一下问题?能用另外一种方式表述它吗?返回到定义。如果你无法解决这个问题,可以先试着解决一些别的问题,是否能想象出一个容易解决的相关问题;一个广义些的问题或是一个更特殊的问题?一个相似的问题呢?能否解决问题的一部分呢?仅保留一部分条件,忽略其余条件;未知可以被决定到什么程度?会发生什么变化?能否从数据中推导出一些有用的东西?能否找出适于确定未知的其余数据?能否改变数据或未知?同时改变两者呢?这样做能否使新的未知和新的数据更接近些?是否使用了全部的数据?使用全部条件了吗?是否考虑了这个问题的全部必要条件?

3、执行你的计划

执行你解决问题的计划?同时检查每一步工作。你是否可以认定每一步都是正确的?你能证明这点么?

4、回顾,检查一下答案

你能检查一下答案么?能检查一个论证么?能否用另外一种方法推导出答案?能否一眼就看出答案?能否在其它问题中再利用本题的答案或结论?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值