美文网首页
糟糕的命名:编程最难的事3

糟糕的命名:编程最难的事3

作者: sailor33 | 来源:发表于2015-06-10 16:19 被阅读141次

    如果你不知道一件事物叫什么,

    你就不知道它是什么。

    如果你不知道这是什么,

    你就不可能坐下来写代码。”


    文章转载自杰微刊,是一个全新的技术原创平台,尽管在这里介绍容易招来推广之嫌,但是,文章的每一个字,都是经过的细细雕琢,即使能引来大家的质疑和批评,也乐意听取,不断改进自己。

    运用正确意味着每一个词都要用的恰到好处。

    关于命名 ——菲利普·卡尔顿(Phil Karlton)

    计算机科学有两个艰难的事:

    1.缓存失效 ;

    2.命名。

    关于不好的命名——刘易斯·卡罗尔(Lewis Carroll)

    当我使用一个词,胖墩儿说是一种轻蔑,当然这也正是我本事的意思-不多也不少。

    爱丽丝奇遇记中,透过镜子,爱丽丝究竟发现了什么?(1871)

    故意无意义的名称

    理论上讲,foo仅仅作为一个占位符名称(因为它无任何含义)

    关于命名——萨姆·加德纳(Sam Gardiner)

    “如果你不知道一件事物叫什么,

    你就不知道它是什么。

    如果你不知道这是什么,

    你就不可能坐下来写代码。”

    什么是最糟糕的变量名?

    ——data

    什么是更糟糕的变量名?

    data2

    什么是第三糟糕的变量名?

    data_2

    缩写容易引起歧义

    以英文为例, char 是 character(字符) 还是 characteristic(特点)?

    mod 的意思是 modify(修改) 还是 modulo (模)?

    acc,pos或者auth呢?

    另外, fab 只是一个函数,ƒ:A➞B。

    而不是 fabulous (传说)

    允许一个例外:ID 作为 “identity” (身份)


    一个字母太短

    局部变量:它的含义是什么?

    var a = 42;

    这一个是例外:

    for  (int  i  =  1;  i  < 42; ++i)

    改成 ii,jj,kk 也并不好

    函数式编程:一个字母仍然太短

    def modp[C](f: B1 => (B2, C), a: A1): (A2, C) = {

    val (b, c) = f(get(a)) (set(a, b), c)

    }

    代码出处:第70行 


    可以用特定含义的词代替更多的词

    什么是appointment_list?

    A calendar?日历?


    什么是company_person?

    Employee普通职员 或者是owner老板?

    什么是text_correction_by_editor?

    只是一个edit-编辑。

    模糊语言是模糊的

    艾伦·格林写了一些模糊的词,如:

    InvoiceManager、

    TaskManager

    ‘Manager’ 非常不准确,

    其含义之一可能是你想要的字:

    Bucket, Supervisor, Planner, Builder

    原文地址:点击查看

    代码里的模糊用语

    get在方法名的开头只用于返回一个字段值。

    如果不是这样,或者从其他地方得到的数据, 用其他的词:

    fetch, find, lookup, create, calculate, derive, concoct.

    错误的词是错的,同义词易混淆

    order ≠ shipment

    carrier ≠ broker

    shipment ≠ transport leg

    shipment = consignment

    carrier = transporter

    transport leg = journey

    Java企业中间件示例 -

    Apache Camel

    JF杰微刊出品: Apache Camel- http://camel.apache.org


    再探属性访问器

    在许多库中, 这些方法名称将是不可抗拒的,但不建议使用:

    getEven

    getReal

    getAround

    getRoundTo

    getRichQuick

    getJoke

    糟糕命名的总结

    无意义:foo;

    太一般:data;

    太短:a;

    太长:text_correction_by_editor;

    缩写:acc;

    模糊:InvoiceManager;

    错误:order;

    只是不好笑:startCamel


    未完待续。


    原文地址:JF杰微刊出品


    相关文章

      网友评论

          本文标题:糟糕的命名:编程最难的事3

          本文链接:https://www.haomeiwen.com/subject/kourqttx.html