zoukankan      html  css  js  c++  java
  • 代码大全读后感之二

      为变量命名时最重要的考虑事项是,该名字要完全、准确地描述出该变量所代表的事物。

    currentDate和todaysDate都是很好的名字,因为它们都完全而且准确地描述出了“当前日期”

    这一概念。事实上,这两个名字都用了非常直白的词。程序员们有时候会忽视这些普

    通词语,而它们往往却是最明确的。cd和c是很糟的命名,因为它们太短,同时又不具有

    描述性。current也很糟,因为它并没有告诉你是当前的什么。date看上去不错,但经过最

    后推敲它也只是个坏名字,因为这里所说的日期并不是所有的日期均可,而只是特指当前日

    期;而date本身并未表达出这层含义。x、x1和x2永远是坏名字——传统上用x代表一个

    未知量;如果你不希望你的变量所代表的是一个未知量,那么请考虑取一个更好的名字吧。

     名字应该尽可能地明确。像x、、i这些名字都泛泛得可以用于多种目的,它们并

    没有像应该的那样提供足够信息,因此通常都是命名上的败笔。有人也许会反驳说,把

    i用作循环下标是最正常不过的了,难道非得写成indexOfTheLoop这种又臭又长的名字才算

    好吗?Steve McConnell认为,如果循环只有寥寥数行,而且只是单层循环,那么用

    i是也是可行的。不过试想一下,如果你一直习惯用i作循环下标,

    而你将来可能需要把这个循环放到另一个循环中去执行,即循环嵌套,

    那么内外层循环都用i作下标肯定是不行的。如果编译器提醒你说变量

    i重复定义,那还算走运;如果编译器默不作声,而你自己又忘了修改,

    呃,你听见虫子飞舞的声音了吗?由于代码会经常修改、扩充,或者复制到其他程序中去,

    因此很多有经验的程序员索性不使用类似于i这样的名字。如果循环不是只有几行,

    那么代码阅读者会很容易忘记i本来具有的含义,因此最好给循环下标换一个更有意义的名字。

    导致循环变长的常见原因之一是出现循环的嵌套使用。如果你使用了多个嵌套的循环,那么就应该给循环变量赋予更长的名字以提高可读性:

     for (int teamIndex = 0; teamIndex < teamCount; teamIndex++)

       for 

       (int eventIndex = 0; eventIndex < eventCount[teamIndex]; eventIndex++)

      { 

            score[teamIndex][eventIndex] = 0; 

       } 

    谨慎地为循环下标变量命名可以避免产生常见的下标串话(index cross-talk)问题:

    想用j的时候写了i,想用i的时候却写了j。同时这也使得数据访问变得更加清晰:

    score[teamIndex][eventIndex]要比score[i][j]给出的信息更多。

     如果你一定要用i、j、k,那么不要把它们用于简单循环的循环下标之外的任何场合—

    —这种传统已经太深入人心了,一旦违背该原则,将这些变量用于其他用途就可能造成误解。

    要想避免出现这样的问题,最简单的方法就是想出一个比i、j、k、更具描述性的名字来。

     变量名的最佳长度似乎应该介于x和maximumNumberOfPointsInModernOlympics

    之间。太短的名字无法传达足够的信息。诸如x1和x2这样的名字所存在的问题是,

    即使你知道了x代表什么,也无法获知x1和x2之间的关系。太长的名字很难写,同时也会使得程序的视

    觉结构变得模糊不清。当研究发现,当变量名的平均长度在10到16个字符的时候,

    调试程序所需花费的气力是最小的。平均名字长度在8到20个字符的程序也几乎同样容易调试。这项原则并不意味着

    你应该尽量把变量名的长度控制在9到15或者10到16个字符。它强调的是,如果你查看

    自己写的代码时发现了很多更短的名字,那么需要认真检查,确保这些名字含义足够清晰。

     

  • 相关阅读:
    Thinking in Java Reading Note(9.接口)
    Thinking in java Reading Note(8.多态)
    Thinking in Java Reading Note(7.复用类)
    SQL必知必会
    Thinking in Java Reading Note(5.初始化与清理)
    Thinking in Java Reading Note(2.一切都是对象)
    鸟哥的Linux私房菜笔记(1.基础)
    Thinking in Java Reading Note(1.对象导论)
    CoreJava2 Reading Note(2:I/O)
    CoreJava2 Reading Note(1:Stream)
  • 原文地址:https://www.cnblogs.com/littilsaber/p/4390797.html
Copyright © 2011-2022 走看看