斯坦福大学公开课《编程方法学》之笔记二——任务三:Karel与Java

在看这节课之前,先阅读了作为课程导论的《Karel The Robot Learns Java》,薄薄的入门教材,还是学到了很多自己并不知道的知识。于是,结合任务三的视频,进行一些总结与补充。

1 .java 文件

当行注释 // 

多行注释 /*

………………

*/

2 注释—>载库—>类定义—>方法定义

3 private:It is generally good programming practice to keepdefinitions private whenever possible. The reasons for this rule are difficultto appreciate until you have had a chance to work with larger programs, but thebasic idea is that classes should try as much as possible to encapsulate information, which means not only to gather it together butalso to restrict access to that information if possible. If a classis well designed, it will seek to reduce that complexity by hiding as muchextraneous detail as it can. This property is known as information hiding and is a cornerstone of the objectoriented philosophy.

尽可能的定义私有函数是一种好的编程习惯。除非你有过实现较为巨大的编程项目的经历,否则学会欣赏这条规则有一点困难,但是基本原则是要尽可能的对类进行信息的封装,这意味着不仅要把代码放在一起,还要尽可能的限制对信息的访问。良好设计的类会尽可能的通过将大量无关的细节隐藏来降低其复杂度,上述的性质就是信息隐藏(information hiding),是面向对象的编程哲学的重要部分。

4 常见错误:

无限循环,语法错误,off-by-one bug差一步错误(即OBOB)等。

OBOE(Off-by-one error),英文有时也表示为Off-by-one bug(OBOG),中文名称为差一错误,一般指在离散的边界条件下发生的逻辑错误。这是计算机程序员在编程时很容易犯的一个错误,经常发生在使用迭代循环时,循环的次数多了一次或者少了一次。具体表现为应该使用“小于”的条件时,错误的使用了“小于或者等于”的条件,或者没有注意到在很多编程语言中,数 组的下标是从0开始,而不是从1开始等等诸如此类的错误都是差一错误。这种错误不只发生在新手身上,有时编程高手在未仔细考虑时可能也会犯错。除了在编程时,解决数学问题时也会出现差一错误。(来源于百度百科)

不知道怎么更好的表达,就求助于百度百科了,囧。简单说来,OBOB就像是差一步,所以有bug。

视频中提到的OBOB,见《Karel The Robot Learns Java》23页的fencepost error。很像小时候的栽树问题,长100的道路,没个10米栽种一棵树,一共可以栽种几棵树?100/10+1=11。小时候也经常忘了+1的吧。所以,问题不难,就是容易被忽略,注意啦。

5 以前选修过软件工程,那是还没怎么编程,没有什么太多的体会。视频里一边编程一边说明概念,很值得一看。提到了要理解,编程是一个在程序员们共同工作的社会环境中完成的活动,所以,要注意编程风格,具有通用性,便于他人阅读。重点提到了从顶至下(top-down design)和逐步精化(stepwise refinement)的的设计方法。此外,编程要注意前提(preconditions)和后置条件(postconditions)的使用。“When you define amethod, you will get into far less trouble if you write down exactly what thepre- and postconditions are.”

6 着重推荐double the number of beepers程序算法的讲解,值得多听几遍,对于更好的体会自顶至下的设计方法很有体会。现在自己还是一直在从底向上,感觉有点不好意思,以前没有养成良好的编程思维习惯,好好改正,好好进步啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值