如何写出优雅的函数(Clean Code读书笔记之二)

第三章讲了在写函数时应该注意的事情,作者首先拿一个开源的测试工具(Fitnesse)来举了一个例子,来说明好的函数该是什么样子。原则上其实和上一篇中讲到的命名的一些原则很相似,就是一个名字要是能够自解释的,当然这一章还会讲到很多新的东西,这里拿这个函数作为一个引子。

//代码2-1
public static String renderPageWithSetupsAndTeardowns(PageData pageData, boolean isSuite)throws Exception{
    boolean isTestPage = pageData.hasAttribute("Test");
    if(isTestPage){
        WikiPage testPage = pageData.getWikiPage();
        StringBuffer newPageContent = new StringBuffer();
        includeSetupPages(test Page, newPageContent, isSuite);
        newPageContent.append(pageData.getContent());
    }
}

KK笔记:kknotes.com
本文链接地址: 如何写出优雅的函数(Clean Code读书笔记之二)

转载须以超链接形式标明文章原始出处和作者信息及版权声明

Continue Reading

命名的艺术(clean code阅读笔记之一)

本文是「Clean Code」(英文版)第二章的读书笔记。

第二章简单地列举了一些命名规则,我们在coding的时候会不断地对我们的变量、函数、参数、类、package,甚至源文件、和包含源文件的目录等等进行命名,这里是简单的几个命名规则能帮助你更好地对这些命名。

1. 使用名副其实(Intention-Revealing)的名字

  • 不要定义无意义的名字
  • 不要使用magic numbers
  • 例子:
    // 坏代码例子
    public List<int[]> getThem() {
        List<int[]> list1 = new ArrayList<int[]>();
        for (int[] x : theList)
            if (x[0] == 4) list1.add(x);
        return list1;
    }
    
    //不是很坏的代码
    public List<int[]> getFlaggedCells() {
        List<int[]> flaggedCells = new ArrayList<int[]>();
        for (int[] cell : gameBoard)
            if (cell[STATUS_VALUE] == FLAGGED)
                flaggedCells.add(cell);
        return flaggedCells;
    }
    
    //好代码
    public List<Cell> getFlaggedCells() {
        List<Cell> flaggedCells = new ArrayList<Cell>();
        for (Cell cell : gameBoard)
            if (cell.isFlagged())
                flaggedCells.add(cell);
        return flaggedCells;
    }
    

KK笔记:kknotes.com
本文链接地址: 命名的艺术(clean code阅读笔记之一)

转载须以超链接形式标明文章原始出处和作者信息及版权声明

Continue Reading

Restful API设计思路及实践

记得第一次写APP的时候,那时还完全不知道REST这个东西,对Web Service也是一知半解。我和另一个同学在讨论使用什么协议来交互时,通过各自充分的调研之后(其实就是搜索引擎找一找。。。),一致认为,HTTP这个东西本身就对带宽的消耗这么大了,这么多Web Service(当时还是SOAP当道)还是基于HTTP之上的,这得浪费多少带宽啊。最后一致决定使用Socket来通信,现在想想当时也是挺不容易的,我们硬是在Socket上搭了一套通信协议,还发展到了第二版。

今天在移动应用普及、前后端分离的大浪潮下,RESTful风格的API大行其道,可是因为它本身就是一个比较模糊且宽泛的概念,所以每个人对它的理解都有千差万别。我觉得我们在技术选型的时候,在自己的技术积累以及参考已有的行业最佳实践的基础上,应当首先考虑自身系统的需求,思考「选择某一种技术」会对系统的开发和维护带来哪些好处与坏处,而不是人云亦云看着别人用什么自己就用什么。而且RESTful API设计目前并没有一个公认的行业最佳实践,故而开发者在设计一个API系统时,更应该根据自身的情况量身定制,千万不要说「我照着某某公司的开放API照搬」就好了。 本文将根据我使用REST的经验来总结一下RESTful API设计的一些知识和经验,自勉。本文将不讨论Oauth等安全问题。

KK笔记:kknotes.com
本文链接地址: Restful API设计思路及实践

转载须以超链接形式标明文章原始出处和作者信息及版权声明

Continue Reading