首先,有没有程序说明文档?有没有详细代码注释,没有就先看找main函数,看执行流程,依次看调用函数代码
除了阅读代码以外, 没有更好的 *** . 7.在寻找bug时, 请从问题的表现形式到问题的根源来分析代码. 不要沿着不相关的路径(误入歧途). 8.我们要充分利用调试器|编译器给出的警告或输出的符号代码|系统调用跟踪器|数据库结构化查询语言的日志机制|包转储工具和Windows的消息侦查程序,
定出的bug的位置. 9.对于那些大型且组织良好的系统, 您只需要更低限度地了解它的全部功能, 就能够对它做出修改. 10.当向系统中增加新功能时, 首先的任务就是找到实现类似特性的代码, 将它作为待实现功能的模板. 11.从特性的功能描述到代码的实现, 可以按照字符串消息, 或使用关键词来搜索代码. 12.在移植代码或修改接口时, 您可以通过编译器直接定位出问题涉及的范围, 从而减少代码阅读的工作量. 13.进行重构时, 您从一个能够正常工作的系统开始做起, 希望确保结束时系统能够正常工作. 一套恰当的测试用例(test
case)可以帮助您满足此项约束. 14.阅读代码寻找重构机会时, 先从系统的构架开始, 然后逐步细化, 能够获得更大的效益. 15.代码的可重用性是一个很诱人, 但难以理解与分离, 可以试着寻找粒度更大一些的包, 甚至其他代码. 16.在复查软件系统时, 要注意, 系统是由很多部分组成的, 不仅仅只是执行语句. 还要注意分析以下内容:
文件和目录结构|生成和配置过程|用户界面和系统的文档. 18.可以将软件复查作为一个学习|讲授|援之以手和接受帮助的机会. ++++++++++++++++++++ 第二章: 基本编程元素 ++++++++++++++++++++ 19.之一次分析一个程序时, main是一个好的起始点. 20.层叠if-else if-…-else序列可以看作是由互斥选择项组成的选择结构. 21.有时, 要想了解程序在某一方面的功能, 运行它可能比阅读源代码更为恰当. 22.在分析重要的程序时, 更好首先识别出重要的组成部分. 23.了解局部的命名约定, 利用它们来猜测变量和函数的功能用途. 24.当基于猜测修改代码时, 您应该设计能够验证最初假设的过程. 这个过程可能包括用编译器进行检查|引入断言|或者执行适当的测试用例. 25.理解了代码的某一部分, 可能帮助你理解余下的代码. 26.解决困难的代码要从容易的部分入手. 27.要养成遇到库元素就去阅读相关文档的习惯; 这将会增强您阅读和编写代码的能力. 28.代码阅读有许多可选择的策略: 自底向上和自顶向下的分析|应用试探法和检查注释和外部文档, 应该依据问题的需要尝试所有这些 *** . 29.for (i=0; i 30.涉及两项不等测试(其中一项包括相等条件)的比较表达式可以看作是区间成员测试. 31.我们经常可以将表达式应用在样本数据上, 借以了解它的含义. 32.使用De Morgan法则简化复杂的逻辑表达式. 33.在阅读逻辑乘表达式时, 问题可以认为正在分析的表达式以左的表达式均为true; 在阅读逻辑和表达式时, 类似地,
作为初学者,我们可能经常会需要去阅读别人的代码,以求从中学到别人的设计思路,抑或是从代码中了解类库的使用。不管哪种需求,我们都需要做到快速准确地阅读。那么,究竟如何阅读呢?让我们以一个.net的项目为例:当我们打开一个.net解决方案的时候,里面通常有不止一个项目,例如一个三层架构的web项目,里面除了一个web网站外,通常还会包括诸如数据层(DAL)、逻辑层(BLL)项目,另外,一般我们会提供一个通用项目(Common类库),或者把DAL中的model部分抽取出来,这样就可能形成一个包含很多个组件的解决方案。那么我们拿到这个解决方案的时候要怎么入手呢?我的经验是,读别人的代码,由面及点和由点及面相结合的读法是最快的。所谓由面及点,就是说,首先理解整个解决方案的分工,比如叫做“web”项目是网站部分,是MVC架构中的V;名字中包括“BLL”的部分是业务代码,是MVC架构中的C;而名字中包括“DAL”的部分是数据库访问代码,是MVC架构中的M……理解每个子项目的功能,有助于我们直接进入主题,而不用花太多时间去熟悉所谓的框架部分。那么,主题在哪里呢?对于一个web项目来说,主题就是页面和业务代码。而这些,需要我们有点及面地学习。所谓由点及面,就是说,我们先进入一个页面,比如index.aspx(如果没有这个页面,一般也会有UserLogin.aspx之类的页面),打开这个页面,找到其中的功能按钮,根据按钮事件找到下一个页面,在熟悉页面流向的过程中,我们也从事件代码中了解了框架代码的调用 *** 。 那么,阅读一个具体的页面(包括页面本身和按钮事件,或者说,业务代码)的 *** 呢?1、代码包括如下部分
1)页面本身,即前台代码
2)页面后台,即各种事件
3)在页面事件中调用到的其他代码(例如数据库访问代码、多层架构中分出的其他层代码等)2、阅读顺序
1)阅读前台代码,对于初学者可以学习控件标签的使用 *** ,当然,事实上我们是用vs的设计工具来画页面的,察看代码只是为了更加熟悉,或者加深理解。
2)阅读页面后台事件代码,分两步走。首先,宏观理解一个事件的功能,比如点击一个登陆按钮,是要做:取得输入用户名和密码,根据用户名和密码查找数据库,根据返回结果判断页面流向,提示登陆成功或失败信息,等等。只需要理解功能即可,不需要深入理解每句代码的作用。因为这个时候我们是初次察看别人的后台代码,对于封装很好的框架,我们是很难之一次阅读就读懂所有东西的。
3)然后,在我们已经了解了一个事件的功能后,我们再次阅读,此时逐行分析。例如我们会碰到代码中定义了一个数据表对象(如User对象),然后执行数据库查询(此时我们可以熟悉项目中的数据库操作),然后对返回值进行操作(例如判断用户存在否,密码正确否)。在这些操作中我们可以(1)学习基础类库的使用,(2)熟悉框架代码的使用
注:在学习代码过程中,了解框架是意识上的进步,学习代码是技术上的进步,所以在逐步理解代码阶段,碰到人家封装好的类,例如数据库访问类,不用太执着,只要理解即可;而碰到某些编程技巧,则需要深入理解。
网上退票(如何退票)【目前退票费怎么收?】自2021年1月31日0:00起,线上线下办理2021年春运期间火车票改签后,退票费按改签后的退票时间逐步收取。如下图所示拓展阅读:来吧!铁路部门:到武汉免费退票从现在到2020年1月24日24:00,在车站、12306网站等渠道购买武汉出发到达列车火车票的...
证券代码:000 九 五 一 股票简称:外国重汽 编号: 二0 二 一- 二 七 原私司及董事会全部 成员包管 疑息披含的内容实真、精确 、完全 ,出有子虚记录 、误导性陈说 或者庞大漏掉 。 外国重汽团体 济北卡车股分有限私司(如下简称“私司”)于 二0 二 一年 四月 二 八日召谢第八届董事...
CNY,点00 七 一美元依据 暗盘 汇率: 一元代陈钱=0点00 三 二群众币,那个价钱 为.CHF, 五0澳年夜 利亚元, 一, 一元代陈钱=0, 六 二 八点0 三添拿年夜 元,0 三添拿年夜 元。 三 四点 五群众币,外洋 人士持有的晨陈群众币取美圆等值。 九 六点 六 四日元, 一 二0...
据荆州消息 网 二0 二 一年 一0月 二0日0 二: 一 三: 二 二的消息 报导,微专网友@华夏 工商店 唐司理 爆料。 安然 夜光降 之际,事宜 ,正在网上炒患上满城风雨,激发 齐网冷议! 据悉,商店 被弱装万万 珠宝 之后咱们到天后领现最单纯的要领 便是间接用Googlemap...
二0 二 一年坐秋是何时几月几号往年 挨秋详细 空儿几点几分 二0 二 一坐秋是 二月 三日 二 二点 五 八分 三 九秒。坐秋是两十四骨气 之一,又称“挨秋”。“坐”是“开端 ”的意义,外国以坐秋为春天的开端 ,每一年 二月 四日或者 五日太阴达到 黄经 三 一 五度时为坐秋,《月...
当然,负责会有吃亏 ;提醒 :投资有风险,昨天,阅批利孬新闻 比特赓续 ,如今 是 二0 一 九年 八月的止情 一万美圆一枚。 今朝 正在数字泉币 投资商场异常 水,如今 阅批一个若干 群众币 二0 一 八现金年 六月 二0日今朝 阅批,您孬。 合折群众币 七币- 八万阁下 ,相闭融资主体经由过程...