• Java编程规范简版总结


    习艺之道有二:知和行。你应当习得有关原则、模式和实践的知识,穷尽应知之事,并且要对其了如指掌,通过刻苦实践掌握它。

    一、变量

    ​ 命名看着很简单,但是选择一个好名字要花时间。但是随意命名,看似节省了时间,但后续自己或别人阅读代码的时候需要花费更多的时间。好的命名应该可以让人一眼就能知道它为什么会存在,它做什么事,它该怎么用。利己由利于他人。

    糟糕的命名示例:

    int d;//消失的时间,以日为单位计算
    // 存在问题:
    // d什么也没有说明,在其他地方使用的时候我们并不能一眼就能知道d是干啥用的,更不会引起时间消逝的感觉
    
    public List<int[]>getThem() {
        List<int[]> list1 = new ArrayList<int[]>();
        for (int[] x : theList) {
            if (x[0] == 4) {
                list1.add(x);
            }
        }
        return list1;
    }
    // 存在问题:
    // 1、theList是什么类型的东西
    // 2、theList的0下标条目的意义是什么
    // 3、值4的意义是什么
    // 4、我该怎么使用返回的列表
    

    规范的命名:

    int elapsedTimeInDays;//消失的时间,以日为单位计算
    
    public List<int[]>getFlaggedCells() {
        List<int[]> flaggedCells = new ArrayList<int[]>();
        for (int[] cell : gameBoard) {
            if (cell[STATUS_VALUE] == FLAGGED) {
                flaggedCells.add(cell);
            }
        }
        return flaggedCells;
    }
    

    变量命名原则:

    1、避免使用误导性名称

    如:1和l、o和0

    2、做有意义的区分,不做无意义的命名

    // 无意义的命名
    public static void copyChars(char[]a1,char[]a2) {
        for (int i = 0; i < a1.length; i++) {
            a2[i] = a1[i];
        }
    }
    
    // 见名知意
    public static void copyChars(char[]source,char[]destination) {
        for (int i = 0; i < source.length; i++) {
            destination[i] = source[i];
        }
    }
    

    3、不要自己造词

    // 糟糕的命名
    private Date genymdhms;
    private Date modymdhms;
    
    // 规范的命名
    private Date generationTimestamp;
    private Date modificationTimestamp;
    

    4、使用命名的常量代替直接使用值

    // 尽量不要直接在程序中使用5,而是用常量代替,便于全局搜索
    private static final int WORK_DAYS_PER_WEEK = 5;
    

    5、尽量使用驼峰命名法,无需前缀

    6、类和对象名称应为名词而不是动词。方法名应为动词或动词短语

    二、函数

    函数的原则:

    1、避免使用长函数、函数要尽量要短小

    2、别担心命名过长

    3、避免参数过多,一般小于三个,除非不得已

    4、避免向函数传入boolean值,坚持函数只做一件事原则

    5、尽量做到函数复用,不要代码冗余

    6、适当添加注释,学会使用TODO注释

    7、不要保留注释掉的无用的代码,防止以后再次阅读时困扰

    8、一个类或函数功能编写完成后,及时进行缩进,方便阅读

  • 相关阅读:
    2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛 Fruit Ninja I
    HDU 1045
    ZOJ 3946 Highway Project
    python基础知识
    粘包问题以及解决方法
    socket套接字
    网络编程 互联网协议 tcp原理
    反射 魔法方法 单例模式
    classmethod与staticmethod isinstance与issubclass
    封装 多态
  • 原文地址:https://www.cnblogs.com/giswhw/p/14962875.html
Copyright © 2020-2023  润新知