学习资料来源:斯坦福大学公开课编程方法cs106aJAVA(下载中心有资源)

相关学习资料已上传至下载中心:学习过程中使用的代码、笔记初稿以及课程讲义(有兴趣者可自行下载)

学习过程中的大部分程序需要导入acm.jar包(已上传至下载中心,也可自行进入http://jtf.acm.org/ 进行下载),


处理大型数据结构的规则:


    名词(nouns)对应 类(classes)
    动词(verbs)对应 方法(methods)
    数据要有与其对应的唯一标识符
    需要选择适当的集合体
    为了减少存储空间以及便于数据的调用,一般数据只有一份,使用时路径指向需要的数据即可

    示例:编写一个简易网络音乐商店(需要能够添加音乐(Song)以及专辑(Album)等)

    根据数据结构规则:(名称对应类,动词对应方法)

        Class Song
            name              String
            band            String
            price            double
            unique identifier(name + band) —— 唯一标识符

        Class Album
            name               String
            band            String
            list of songs    ArrayList
            add
            list(iterator)

        ArrayList<Song> songs = new ArrayList<Song>();
        HashMap<String, Album>  albums = new HashMap<String, Album>();


软件开发的一些技巧及建议

    调试程序(Debugging):
        设计软件(Design) —— 建筑师(Architect)
        编写代码(Coding)—— 工程师(Engineer)
        测试(Testing)—— 破坏他人财产的人(Vandal)
        调试程序(Debugging)—— 侦探(Detective)—— 找到错误在哪 并修复它

    软件开发四部曲:
        测试 —— 开发 —— 调试 —— 部署
        每一环节的花费是前者的十倍

    调试经验总结:(产生问题的原因)
        1、    不好的变量值
        2、    有错误的逻辑
        3、    无根据的假设——单位

    软件调试的规则:
        大部分问题都是简单的问题。
        程序要系统化
        质疑你的假设(很多人在程序出现问题时常常会假设问题可能出现在哪里)
        挑剔的对你的代码
        遇到问题时别惊慌失措
    
    调试方法:
        println:如果错误的值是你程序的问题所在,在代码里添加额外的prinln语句可以查找问题所在位置
        单元测试(Unit test):测试独立的单元 (不可一口气测试整个程序)
        eclipse调试方法:断点