一个小程序看代码规范
来源:互联网 发布:mysql数据库清空所有 编辑:程序博客网 时间:2024/06/01 10:02
public class Person { private static final int tme = 20; private static int age = 30; private int count = 0; public static int all = 50; public String name; public Person(int count,String name) { this.count = count; this.name = name; } public static int getAll() { return all; } public static void setAll(int all) { Person.all = all; } public static int getAge() { return age; } public static void setAge(int age) { Person.age = age; } public static int getTme() { return tme ; } @Override public String toString() { return "tme:" + tme + ",age:" + age +",count:" + count +",all:" + all ; }<p>}</p>
这样的类大家可能都见过,但是平时应该没有人详细的研究过,反正是可以用,没有出问题,就可以了。
现在对上面这个类中的问题或者说是不好的地方进行一下说明,仅代表个人意见
首先说明一下static,个人理解,static修饰变量时,表示这个变量不属于这个类的对象,而是属于这个类,也就是说,所有的类的实例使用的都是这一个变量,大家用的是同一个,不是出现同名的多个。
再简单的说一下private,private修饰的变量,应该是将变量私有化,不希望其他类通过类的实例进行修改,如果需要修改,需要提供对应的方法进行修改。一般这样的变量是提供给其他对象或类调用的,private static final int tme = 20;
time这个变量的含义是:静态的,final的,也就是说这个变量属于整个类,所有的对象公用这一个,final的含义是,这个变量是不可以进行修改的。
这个变量声明存在的问题是,既然想给其他对象或者类调用,为啥声明成private。声明为private,那就是不想让别人直接调用,需要另外提供对应的方法
public static int getTme() { return tme; }
但是这个方法,同样是static,如果不是static那么就不可以引用或操作static的time。静态方法同样是需要类名.的方式调用。这样为啥不直接将变量设置为
public static final int tme = 20;如果返回的是这样的
public static int getTme() { return tme *2; }
如果是这样也可说得过去,但是那为啥不直接写成
public static final int tme = 20 *2;
返回的值是经过计算得出的,需要time 与另外一个static v进行计算得出,v是经常变化的
public static int getTme() { return tme * v;}
如果是这样,那么time设置成private 看似很合理。那么这个函数命名就不是很合理了吧,你的这个函数,不是返回Time,而是返回的一个计算结果,那么是不是修改一个名字会更容易理解呢。例如修改为public static int getResult()
public String name;
name是一个普通的成员变量,每一个对象都有自己的name。根据封装的思想,这个name应该设置为private比较好,然后对外提供set和get方法,这样做的好处是,在对象进行赋值时我们可以进行必要的安全检查或者拦截处理。
public void setName(String name) { if(null == name){ name = ""; } this.name = name;}
这样的话,不管外面有多少个对象,我们只要修改这一个地方就可以,如果设置为public
那么如果对name进行修改,可能会出现这样的情况,Person p = new Person();p.name= “123”。如果 有一天说,需要进行一些过滤,名字必须以字母开头,那么,要是有1000个这样的对象,是不是需要一个一个的检查一千遍。
同理 public static intall = 50; 已经对外提供了set和get方法,为啥不修改成pirvate呢?
Person p1 = new Person(11,"1"); System.out.println(p1.toString()); Person p2 = new Person(12,"2"); System.out.println(p2.toString()); p2.all = 25; p2.setAge(15); System.out.println(p1.toString());
运行结果:如果你使用一个对象,修改了一个static修饰的变量,那么其他所有对象的这个值都会被修改。
tme:20,age:30,count:11,all:50tme:20,age:30,count:12,all:50tme:20,age:15,count:11,all:25
- 一个小程序看代码规范
- 由一个小程序看内存分配
- 一个小程序看流的读取
- 没有用递归,写了一个文本转成树的小程序,代码凑和看吧
- 代码要规范,看一个for的例子
- 从一个小程序看Java的对象构造过程
- 一个c语言小程序 菜鸟必看
- 从汇编看一个小程序的完整执行过程
- 看一个聊天小程序使用了那些java技术
- 一个小测试,看怎样易语言程序误杀最低?
- 通过一个小程序看cin.getline的用法
- 通过一个小程序看putc和getc的用法
- Android 一个有趣的小程序!!!看你能有多短!!!
- 一个小程序看运算符重载的方法
- 从一个计算 数组累加和 的小程序看 程序性能优化 的小技巧
- C++代码风格--看google代码规范
- 初学java,写的一个小程序遇到点问题,又碰上论坛关闭,在此上代码,希望能有人帮我看下,多谢
- 代码小规范与原则
- 百度员工离职总结:如何做个好员工?
- 每日风险投资速递(7月18日,14个互联网动态事件)
- ognl 取得request、session 的值
- indent-C语言代码格式化工具
- 鼠标,控件,互动
- 一个小程序看代码规范
- 素数筛选【模板】
- C/C++代码格式规则中比较有争议的几处
- 链表的partition
- poj2411 状态压缩dp
- Xenomai user irq 示例
- apk反编译和重新打包
- 世界杯的中国元素——英利公司
- 最大熵模型学习笔记李航统计学习