💻 6.005.1x - Week 1

目录

  • I. Intro —— 写java的初体验,解了problem set 0
  • II. Testing —— 不同test的区别
  • III. Specification —— 不同spec的区别,以及如何写好
  • IIII. Snapshot Diagram —— 不同符号的含义

I. Intro

1. Coding Descipline
  • Safe from bugs
  • Easy to understand
  • Ready for change
2. Java语法memo
  • 继承

以官网doc的例子。Mountain / Road / Tandem Bike三种,都是Bicycle,但是增加了不同的feature。因而,OOP中,允许继承。此时,Bicycle是其他三者的superclass;Mountain / Road / Tandem Bike则是subclasses。

Bicyle的继承

Syntax用了```extends``,继承写起来,大概长这样👇:

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass has
    // one field
    public int seatHeight;

    // the MountainBike subclass has
    // one constructor
    public MountainBike(int startHeight, int startCadence,
                        int startSpeed, int startGear) {
        super(startCadence, startSpeed, startGear);
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass has
    // one method
    public void setHeight(int newValue) {
        seatHeight = newValue;
    }   

}
  • if语句: "?"
if ( a > b ) {
    max = a;
} else {
    max = b
}

简写成

max = (a > b) ? a: b;
3. Problem set 0心得
  1. 做problem set 0的时候,放弃了最后三题,看不懂atan的数学问题。希望后面的problem set不要出现一样的...🤦‍♂️。
  2. 有一个之前完全没有注意的,就是magic number。忽然就声明了一个数字,其实违反了easy to understand。合适的方法是,声明一个变量,然后comment它的含义。有时候需要final它。
  3. unit test的重要性,下assert,做好每个unit的debug。
  4. floatdouble区别在于32bit和64bit,所以用 double更安全。
  5. 前面那个javadoc,也从没写过,好像挺方便的。写javadoc,有一个关键的准则,是:NEVER talk about local variables of the method or private fields.
    NEVER talk about local variables of the method or private fields.

模板大概是:

/**
brief description, what is this method for?
@param parameterName What is the parameter for?
@return value What is the value meaning?
**/

II. Testing

1. Residual defect rates
  • 1 - 10 defects/kloc: Typical industry software.
  • 0.1 - 1 defects/kloc: High-quality validation. The Java libraries might achieve this level of correctness.
  • 0.01 - 0.1 defects/kloc: The very best, safety-critical validation. NASA and aerospace companies can achieve this level.

kloc : 1000 lines of source code.

2. Testing
  • Test-first programming. Write tests before you write code.
  • Partitioning and boundaries for choosing test cases systematically.
  • White box testing and statement coverage for filling out a test suite.
  • Unit-testing each module in isolation as much as possible.
  • Automated regression testing to keep bugs from coming back.
2.1 Unit Tests

Testing modules in isolation leads to much easier debugging.

2.2 Regression Testing

Regression意味着,在改bug-A或者增加feature-B的时候,又多了新的bug-B。在test-first debugging中,把之前的bug-A的test case增加到test suite中,这样写完B后,可以确定A不会再发生。

3. 心得

之前对unit test没啥概念,意味只要分模块写code就好。但是,每个模块的debugging和test case,要考虑到模块中,也就是test-first programming的重要性。Write tests before you write code.


III. Specification

1. underdetermined specs & nondeterminism 定义
  • deterministic spec: 1 input → 1 output
  • under-deterministic spec: 1 input → >1 outputs
  • under-deterministic spec can have determined implementation
2. declarative vs. operational specs 定义
  • operational specs → spec中写了method运行的步骤
  • declarative specs (better) → spec不提供内部的步骤,只提供outcome的properties
3. 好的specs长什么样?
  • better spec👍 → weaker precondition🔽 & stronger postcondition🔼
4. 如何写好spec?
  • brief & clear & structured
  • coherent inputs
  • no global variables & no printing (instead of returning)
  • no making internal helper methods public (helper method only for local use)

IIII. Snapshot Diagram

  1. → variable
  2. ⇒ final
  3. → ⚪
  4. → ⭕(double circles)
  5. List


    Lists
  6. Set


    Set
  7. Map


    Map

6.005.1x,自学的第一个礼拜。💻🔨
整个版面乱成一锅粥。或许应该再开一个post,来整理知识点吧。🤦‍♂️

Ronn Liu 🙋‍♂️
2019/01/01 - 2019/01/06 📌

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,319评论 0 10
  • 在回家的时候,想到拍一些唯美的人像,终于满足了。来一组双重曝光的,多多指教,谢谢!!!
    fipyd丶欤阅读 168评论 0 2
  • 爱是最有力的医治力量,我向爱敞开,我愿意爱与被爱,我看到自己成功 健康充满了创造性,居住在一个安全和宁静的地方...
    光芒四射的英英阅读 278评论 0 0
  • 上面跟你分享一个高效处理工作的四象限图。希望对你有所帮助。 四个象限分别代表了:事务的优先顺序、你对事务的忍受程度...
    LeIsMor阅读 2,285评论 0 0
  • 自从今年下定决心立志要当个合格的全职妈妈不再为要不要上班的事情纠结后,我就很荣幸拥有了很长一段时...
    王yiyi阅读 227评论 0 0