笔记2:函数
1.短小、还要更短小
    每个函数都一目了然,每个函数灰依序把你带到下一个函数
    if、else、while语句等,其中的代码块应该只有一行,块内调用的函数名称应该较具有说明性
2.只做一件事
    就是看判断能否再拆出一个函数,该函数不仅只是单纯地重新诠释其实现
3.每个函数一个抽象层级(暂时不懂)
    让代码读起来自顶向下的TO起头段落是保持抽象层级协调一致的有效技巧
4.switch语句
    (保留)
5.使用描述性的名称
    长而具有描述性的名称,要比短而令人费解的名称好,长而具有描述性的名称,要比描述性的长注释好。使用某种命名约定,拒函数名称中的多个单词容易阅读,然后使用这些给函数取个能说清其功能的名称
    命名方式要保持一致使用与模块名一脉相承的短语、名词、与动词给函数命名
6.函数参数
    最理想的参数数量是零,其次是一,再次是二,应该尽量避免三。
    输出参数比输入参数还要难以理解
    向函数传入boolean值就表示函数不只做了一件事,
    应该避免输出参数,如果要修改某种状态,就修改所属对象的状态
7.分隔指令与询问
    函数要么做什么事,要么回答什么事,但二者不可兼得
8.使用异常代替返回错误码
    抽离Try/Catch块
    错误处理只做一件事
9.不要重复
10.每个函数、函数中的每个代码块都应该有一个入口、一个出口
11.大师级的程序员把程序当故事来写,而不是程序来写

Clean Code(二):函数的更多相关文章

  1. Clean code 关于注释、函数、命名的感想

    最近在看代码整洁之道(Clean code)这本书,其实看的有点痛苦,因为越看就会越想自己写的代码是什么鬼?一些不知所云的命名,不整洁的代码格式,本想诠释代码的意思却添加了一段段废话,还有那些被强制加 ...

  2. 《Clean Code》 代码简洁之道

    作者介绍 原文作者: Robert C. Martin, Object Mentor公司总裁,面向对象设计.模式.UML.敏捷方法学和极限编程领域的资深顾问,是<敏捷软件开发:原则.模式.与实践 ...

  3. 【笔记】Clean Code(持续更新)

    这个暑假出来实习,第一次体会到在一个团队中开发的体验,与网上的网站看到的大为不同,以前看网上说什么程序员写了屎山代码,写了一堆模糊的注释或者说垃圾代码不写注释. 但在我的实习体验中,代码虽然看起来很多 ...

  4. Writing Clean Code 读后感

    最近花了一些时间看了这本书,书名是 <Writing Clean Code ── Microsoft Techniques for Developing Bug-free C Programs& ...

  5. 说说怎么写clean code

    前两天参加了公司组织的一个培训,主题是“如何写出好的代码” ,刚看到这个主题,第一反应是又不知道是哪个培训机构来忽悠钱的!老大安排了,就去听听呗. 说实在的,课程内容没有什么新鲜的东西,就是讲讲如何发 ...

  6. 小课堂week13 Clean Code Part2

    Clean Code Part2 对象与数据结构 首先让我们进行一个严肃的思考,对象与数据结构的区别在哪里? 如下两段代码分别用数据结构和对象的方法来描述了一个Point. public class ...

  7. 小课堂Week12 Clean Code Part1

    小课堂Week12 Clean Code Part1 今天的主题是函数,让我们看一个函数,找一找其中的"不整洁". 我们也根据这段代码,讨论下对于整洁代码的两个重要原则. publ ...

  8. 《代码整洁之道》(Clean Code)- 读书笔记

    一.关于Bob大叔的Clean Code <代码整洁之道>主要讲述了一系列行之有效的整洁代码操作实践.软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发流派 ...

  9. 聊聊clean code

    clean code,顾名思义就是整洁的代码,或者说清晰.漂亮的代码,相信大多数工程师都希望自己能写出这样的代码. 也许这是个千人千面的话题,每个工程师都有自己的理解.比如我,从一个天天被骂代码写得烂 ...

随机推荐

  1. hdu1054Strategic Game(树形DP)

    链接 归属简单树形DP 挺简单的 跟第一道一样 就是我跑偏了题意..以为要覆盖点 纠结啊 推了N久 推不出啊 然后就郁闷了 打了局游戏 边想边打 实在想不出 看下题解 跑偏了 分两种情况D 方程见代码 ...

  2. 函数page_rec_get_next_const

    /************************************************************//** Gets the pointer to the next recor ...

  3. BZOJ_3282_Tree_(LCT)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=3282 给出n个点以及权值,四种操作: 0.求x,y路径上的点权值的异或和. 1.连接x,y. ...

  4. WordPress Pretty Photo插件‘hashrel’参数跨站脚本漏洞

    漏洞名称: WordPress Pretty Photo插件‘hashrel’参数跨站脚本漏洞 CNNVD编号: CNNVD-201311-405 发布时间: 2013-11-28 更新时间: 201 ...

  5. 轻松搭建自己的Linux发行版本

    许多人想要搭建自己的Linux发行版本,可能是觉得有趣,也可能是为了学习更多的Linux知识,或者因为他们有很正式的问题要解决.但是秘密是:自己搭建完美的发行版本不是很困难的一件事.事实上,我们收集了 ...

  6. Maven创建工程项目如何下载所需要的jar包

    转自:http://hi.baidu.com/hotthought/item/57ce101556d0ba0de75c36c5 Maven包的下载路径: http://maven.apache.org ...

  7. 读取编码为utf-16le的文件并打印

    import codecs data = open('test.txt').read()if data[:2] == codecs.BOM_UTF16_LE:    data = data[2:]  ...

  8. Java JDK8 安装及环境变量配置

    步骤: 1.下载JDK 2.安装 3.配置环境变量 注意: 1.在选择安装路径时,不要选择C盘或D盘下的[Program Files]目录.此目录名中有空格,会导致配置不成功. 参照链接: http: ...

  9. vijosP1210 盒子与球

    vijosP1210 盒子与球 链接:https://vijos.org/p/1210 [思路] Stirling+全排列. 因为第二类stirling所求是没有标明盒子顺序的方案数,所以最后需要乘一 ...

  10. leetcode—Populating Next Right Pointers in Each Node

    1.题目描述 Given a binary tree   struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLink ...