「匈牙利法java」匈牙利法国
本篇文章给大家谈谈匈牙利法java,以及匈牙利法国对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
使用Java作为程序语言时,好的命名规范有哪些
Package 的命名
Package 的名字应该都是由一个小写单词组成。
Class 的命名
Class 的名字必须由大写字母开头而其他字母都小写的单词组成
Class 变量的命名
变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。
Static Final 变量的命名
Static Final 变量的名字应该都大写,并且指出完整含义。
参数的命名
参数的名字必须和变量的命名规范一致。
数组的命名
数组应该总是用下面的方式来命名:
byte[] buffer;
而不是:
byte buffer[];
方法的参数
使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:
SetCounter(int size){
this.size = size;
}
变量名
普通变量命名应该采用首字母小写,其他字母首字母大写的方式。
final static变量的名字应该都大写,并且指出完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词如。
NUM_DAYS_IN_WEEK MAX_VALU
如果需要对变量名进行缩写时,一定要注意整个代码中缩写规则的一致性
context=ctx message=msg
通过在结尾处放置一个量词,就可创建更加统一的变量
First(一组变量中的第一个) Last(一组变量中的最后一个) Next(一组变量中的下一个变量) Prev(一组变量中的上一个) Cur(一组变量中的当前变量)
无论什么时候,均提倡应用常量取代数字、固定字符串。也就是说,程序中除0,1以外,尽量不应该出现其他数字。
索引变量:i、j、k等只作为小型循环的循环索引变量。
逻辑变量:避免用flag来命名状态变量,用is来命名逻辑变量。
if(isClosed){ dosomeworks; return; }
数组
总是使用以下方式定义数组:
int[] arr = new int[10];
禁止使用C语言的是形式:
禁止 int arr[] = new int[10];
集合
数组或者容器推荐命名方式为名词+s的方式,例如:
List persons = getPerson(); for(Person person : persons){ dosomeworks; }
泛型
应该尽量简明扼要(最好是一个字母),以利于与普通的class或interface区分
Container中的Element应该用E表示;Map里的key用K表示,value用V;Type用T表示;异常用X表示
如果需要接收多个Type类型的参数,应该用邻接T的大写字母——例如S——来依次表示,当然也可以用T1, T2这样的方式
public class HashSet extends AbstractSet {…} public class HashMapextends AbstractMap {…} public class ThreadLocal {…} public interface Functor { T val() throws X; }
推荐的命名
1.当要区别接口和实现类的时候,可以在类的后面加上“Impl”。
interface Container class ContainerImpl
2.Exception类最好能用“Exception”做为类命名的结尾
DataNotFoundException InvalidArgumentException
3.抽象类最好能用“Abstract”做为类命名的开头
AbstractBeanDefinition AbstractBeanFactory
4. Test类最好能用“Test”做为类命名的结尾
ContainerTest
5.简称与缩写(不推荐使用)
cp代表colorPoint buf代表buffer off代表offset len代表length
除非是在循环中,否则一般不推荐使用单个字母作为变量名,不过也有例外,即约定俗成的单个字母
b代表byte c代表char d代表double e代表Exception f代表float i, j, k代表整数 l代表long o代表Object s代表String v代表某些类型的特定值
代码风格
花括号
花括号统一采用以下格式:
if(bool experssion){ dosomework; }
除非花括号中为空,不然任何情况下不能省略花括号,并且花括号必须换行,例如:
if(i==0){ return; } while(true) {}
以下写法禁止出现:
禁止 if(i != 0) return; 禁止 if(i !=0) {return;}
括号
括号的前,后一个字符不需要空格,例如:
Person p = new Person(“Jack”, 17);
空格
逗号之后紧跟一个空格。
Person p = new Person(“Jack”, 16, “China”);
二元操作符前后跟空格。
int i = a + b – c * d;
3. 一元操作符不需要空格,for语句分号后有空格。
for(int i = 0; I 10; i++){ dosomework; }
4. 括号前后不需要空格
类
类的定义结构按照顺序为:
1) 常量
2) 成员变量
3) 构造函数
4) 成员函数
5) get和set方法
各个部分之间留出一个空行。
例如:
规范类模板:
class Person{ private final static int MAX_AGE = 100; private String firstname = “Jack”; public Person(){} public Person(String firstname){ this.firstname = firstname; } public void doExercise(){ dosomeworks; run(); } private void run(){ dosomeworks; } public getFirstname(){ return firstname; } public setFirstname(String firstname){ this.firstname = firstname; } }
2.构造函数
1) 参数为空的构造函数出现在最上方
2) 有调用关系的构造函数相邻
3) 参数尽量由少到多从上至下排序
3.使用成员变量
在类的方法内引用成员变量了命名冲突以外,不使用this。非特殊情况在类的方法内都不使用get和set方法存取成员变量。
4.方法
有调用关系的方法尽量放在相邻的位置,public和private方法可以交叉放置。
5.get和set方法,所有需要公开的成员变量都要符合良好的javabean规范,提供get和set方法,尽量使用IDE工具自动生成。
Javadoc注释
在每个程序的最开始部分,一般都用Javadoc注释对程序的总体描述以及版权信息,之后在主程序中可以为每个类、接口、方法、字段添加 Javadoc注释,每个注释的开头部分先用一句话概括该类、接口、方法、字段所完成的功能,这句话应单独占据一行以突出其概括作用,在这句话后面可以跟随更加详细的描述段落。在描述性段落之后还可以跟随一些以Javadoc注释标签开头的特殊段落,例如上面例子中的@auther和@version,这些段落将在生成文档中以特定方式显示
关于java里类名和class文件名的首字母大小写问题。
小写是可以,但是习惯首字母大写;并且java文件名要和类名一样,这是规定。
网上找了个编程规范,供参考:
3. 命名约定
所有变量的定义应该遵循匈牙利命名法,它使用3字符前缀来表示数据类型,3个字符的前缀必须小写,前缀后面是由表意性强的一个单词或多个单词组成的名字,而且每个单词的首写字母大写,其它字母小写,这样保证了对变量名能够进行正确的断句。
这样,在一个变量名就可以反映出变量类型和变量所存储的值的意义两方面内容,这使得代码语句可读性强、更加容易理解。
3.1 包、类及方法命名
标示符类型 命名约定 例子
包 全部小写。
标识符用点号分隔开来。为了使包的名字更易读,Sun 公司建议包名中的标识符用点号来分隔。
Sun 公司的标准 java 分配包用标识符 .java 开头。
全局包的名字用你的机构的 Internet 保留域名开头 。 局部包:
interface.screens
全局包:
com.rational.www. interface.screens
类,接口 类的名字应该使用名词。
每个单词第一个字母应该大写。
避免使用单词的缩写,除非它的缩写已经广为人知,如HTTP。 Class Hello ;
Class HelloWorld ;
Interface Apple ;
方法 第一个单词一般是动词。
第一个字母是小些,但是中间单词的第一个字母是大写。
如果方法返回一个成员变量的值,方法名一般为get+成员变量名,如若返回的值是bool变量,一般以is作为前缀。
如果方法修改一个成员变量的值,方法名一般为:set + 成员变量名。
getName();
setName();
isFirst();
变量 第一个字母小写,中间单词的第一个字母大写。
不要用_或作为第一个字母。
尽量使用短而且具有意义的单词。
单字符的变量名一般只用于生命期非常短暂的变量。i,j,k,m,n一般用于integers;c,d,e一般用于characters。
如果变量是集合,则变量名应用复数。
命名组件采用匈牙利命名法,所有前缀均应遵循同一个组件名称缩写列表。 String myName;
int[] students;
int i;
int n;
char c;
btNew;
(bt是Button的缩写)
常量 所有常量名均全部大写,单词间以‘_’隔开。 int MAX_NUM;
3.2 其它
开发人员如果遇到上述表格中未列举的类型,请书面通知相关管理人员,由管理人员集中更新列表内容,不得擅自启用未经确定的新变量前缀。
4. 使用常量
4.1 使用常量
1. 常数很容易在数据输入时出错
常数存在的主要问题之一是你很容易在键入数字时出错,从而颠倒了数字的位置。例如,当你键入数字10876时,很容易的键入10867或18076。与处理变量和保留字的方法不同,编译器并不在乎颠倒了位置和不正确的数字,有时简单的错误造成的问题不会立即表现出来,而当问题表现出来时,它们会以随机的计算错误的形式出现,这些错误很难准确定位。用常量来取代常数时,编译器将在编译时检查常量的有效性。如果常量不存在,编译器便将这一情况通知你,并拒绝进行编译,这可以消除错误键入的数字带来的问题,只要常量拥有正确的值,使用该常量的所有代码也有使用该正确值。
2. 常数很难不断更新
3. 常量使代码更容易阅读
使用常量后,得到的一个额外好处是可使创建的代码更容易阅读。常数很不直观。也许你对常数非常了解,但其他人则根本看不明白。通过合理的给常量命名,使用这些常量的代码就变得比较直观了,更容易阅读。
为常量赋予较宽的作用域,这与使用变量时的情况不同。在一个应用程序中你决不应该两次创建相同的常量。如果你发现自己复制了一个常量,请将原始的常量说明转至较宽的作用域,直到该常量可供引用它的所有方法为止。
5. 变量
5.1 定义有焦点的变量
用于多个目的的变量称为无焦点(多焦点)的变量。无焦点变量所代表的意义与程序的执行流程有关,当程序处于不同位置时,它所表示的意义是不固定的,这样就给程序的可读性和可维护性带来了麻烦。
5.2 只对常用变量名和长变量名进行缩写
如果需要对变量名进行缩写时,一定要注意整个代码中缩写规则的一致性。例如,如果在代码的某些区域中使用Cnt,而在另一些区域中又使用Count,就会给代码增加不必要的复杂性。
变量名中尽量不要出现缩写。
5.3 使用统一的量词
通过在结尾处放置一个量词,就可创建更加统一的变量,它们更容易理解,也更容易搜索。例如,请使用strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。
量词列表:
量词后缀 说明
First 一组变量中的第一个
Last 一组变量中的最后一个
Next 一组变量中的下一个变量
Prev 一组变量中的上一个
Cur 一组变量中的当前变量
5.4 使用肯定形式的布尔变量
给布尔变量命名时,始终都要使用变量的肯定形式,以减少其它开发人员在理解布尔变量所代表的意义时的难度。
5.5 为每个变量选择最佳的数据类型
这样即能减少对内存的需求量,加快代码的执行速度,又会降低出错的可能性。用于变量的数据类型可能会影响该变量进行计算所产生的结果。在这种情况下,编译器不会产生运行期错误,它只是迫使该值符合数据类型的要求。这类问题极难查找。
5.6 尽量缩小变量的作用域
如果变量的作用域大于它应有的范围,变量可继续存在,并且在不再需要该变量后的很长时间内仍然占用资源。
它们的主要问题是,任何类中的任何方法都能对它们进行修改,并且很难跟踪究竟是何处进行修改的。
占用资源是作用域涉及的一个重要问题。对变量来说,尽量缩小作用域将会对应用程序的可靠性产生巨大的影响。
8. 表达式和语句
8.1 每行应该只有一条语句。
8.2 if-else,if-elseif语句,任何情况下,都应该有“{”,“}”,格式如下:
if (condition) {
statements;
} else if (condition) {
statements;
} else{
statements;
}
8.3 for语句格式如下:
for (initialization; condition; update) {
statements;
}
如果语句为空:
for (initialization; condition; update) ;
8.4 while语句格式如下:
while (condition) {
statements;
}
如果语句为空:
while (condition);
8.5 do-while语句格式如下:
do {
statements;
} while (condition);
8.6 switch语句,每个switch里都应包含default子语句,格式如下:
switch (condition) {
case ABC:
statements;
/* falls through */
case DEF:
statements;
break;
case XYZ:
statements;
break;
default:
statements;
break;
}
8.7 try-catch语句格式如下:
try {
statements;
} catch (ExceptionClass e) {
statements;
} finally {
statements;
}
11. 可移植性
1. 尽量不要使用已经被标为不赞成使用的类或方法。
2. 如果需要换行的话,尽量用 println 来代替在字符串中使用"\n"。
3. 用separator()方法代替路径中的”/”或”\” 。
4. 用pathSeptarator()方法代替路径中的 ” : ” 或 ” ;” 。
C++、Java与C#的命名规范总结
摘要 由于在开发工作中经常用到C++ Java和C#作为开发语言 命名规范的问题经常给我造成一些困扰 一方面命名规范没有唯一的标准答案 另一方面 虽说语言的命名规范并没有固定的形式 三种语言的风格毕竟不太一样 也各自有着一些独特的特点 本文将对C++ Java与C#的命名规范进行总结 在编写代码的过程中所采用的命名方式经常变动 没有形成固定的风格 因此 根据从网上收集到的一些资料以及自身的一些经验 对C++ Java以及C#的命名规范进行了总结 方便以后查询 命名规范的原则 ◆ 尽量采用以前采用过的命名规则 ◆尽量在三种语言下采用相同的命名规则 以方便记忆 ◆尽量采用来自官方(如Sun MS)的命名规则 匈牙利命名法 Camel命名法与Pascal命名法匈牙利命名法 在Windows编程中使用非常普遍 由微软的一位匈牙利程序员提出 匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀 标识出变量的作用域 类型等 例如 m_lpszStr表示指向一个以 字符结尾的字符串的长指针成员变量 在面向对象的程序设计中匈牙利命名法使用起来非常别扭 Camel命名法 即骆驼式命名法 原因是采用该命名法的名称看起来就像骆驼的驼峰一样高低起伏 Camel命名法有两种形式 混合使用大小写字母和单词之间加下划线
例如runFast和run_fast都属于Camel命名法 Pascal命名法 与Camel命名法类似 不过Pascal命名法的首字母为大写字母 命名规范对照表
标识符类型
C++
Java
C#
文件名
与类名相同 定义类是文件名一般成对出现 如FooBar h和FooBar cpp对应类FooBar
与类名相同
同Java
名字空间 包
同C#
包名的前缀是全部小写的ASII字符并且是一个顶级域名 通常是 edu gov net 包名的后续部分根据不同机构各自内部的命名规范不尽相同 这类命名规范可能以特定目录名的组成来区分部门 项目 机器或注册名
示例
l sun eng
l apple quicktime v
l edu cmu cs bovik cheese
Pascal命名法 且从表示范围大的名字开始
示例
l Oracle Data Access;
l Microsoft Office Excel;
枚举值
Pascal命名法 枚举值前面加上枚举类型名 中间以下划线 _ 隔开
示例
l enum Color{Color_Red Color_Green};
Pascal命名法
示例
l enum Color{Red Green};
同Java
类 结构体 类型定义(typedef) 枚举类型
同Java
Pascal命名法
示例
l class Raster;
l class ImageSprite;
同Java
接口
与类型命名规范相同
命名规则与类名相似
示例
l interface RasterDelegate;
l interface Storing;
Pascal命名法 前面需要加上字符 I
示例
l interface ITester;
l interface ILogger;
方法
同C#
Camel命名法
示例
l run();
l runFast();
l getBackGround();
Pascal命名法
示例
l Run();
l RunFast();
l GetBackGround();
方法内的变量及参数
同Java
Camel命名法
示例
l int myWidth;
l int taxTotal;
同Java
私有 保护实例字段
同Java
Camel命名法 前面需要加一个下划线 _
示例
l int _employeeId;
l String _name;
l Customer _customer;
同Java
属性 存取函数
Pascal命名法 读取函数前面加上 Get 设置函数前面加上 Set
示例
l GetEmployeeId();
l SetName();
l GetCustomer();
Camel命名法 读取函数前面加上 get 设置函数前面加上 set
示例
l getEmployeeId();
l setName();
l getCustomer();
与方法命名规则相同 应该与字段名称相同 建议采用自动属性
示例
常量
同Java
全部大写 单词间用下划线隔开
示例
l static final int MIN_WIDTH = ;
l static final int MAX_WIDTH = ;
l static final int GET_THE_CPU = ;
同Java
事件
无
无
Pascal命名法
示例
l FormClosing;
l ValueChanged;
l ButtonClicked;
异常类型
继承自std::exception 与类型命名规则相同 且以Exception结尾
继承自java lang Exception 与类型命名规则相同 且以Exception结尾
继承自System Exception 与类型命名规则相同 且以Exception结尾
lishixinzhi/Article/program/net/201311/13779
如何优雅地为程序中的变量和函数命名
简言之,根据语意来选择词汇,别无它法……然而,有时我们会不知用什么词汇更合适。
当你想到某个抽象的东西,你更倾向于最先想到的词语,除非你故意不这样,这些词也会抢着出现,直到模糊或改变你的想法。
当你想到一个具体的对象,你觉得词穷,然后你想描述的已经看到了,然后你继续寻找更适合它的词。
哈哈,命名竟成了编程中最难的事~
Martin Fowler曾经在一篇文章中曾经引用过Phil Karlton的话:
There are only two hard things in Computer Science: cache invalidation
and naming things.
他说这句话在很长的一段时间内都是他最喜欢的话。可见命名对于广大的程序员来说的确是个大问题。
对于我们中国人来说,问题可能出在两个方面:
– 自打学编程开始就没被教育过要重视命名。
这可以在谭浩强的《C语言入门》一书中可见一斑。《C语言入门》可以说是很多程序员在大学时学习的第一门编程语言使用的教材。而本书通篇都是各种
a,b,c,x,y,z 的命名方式。这种poor naming的方式被广大程序员纷纷效仿,导致如今在很多项目代码中随处可见。
– 命名需要一定的英文功底,而国内程序员的英文水平参差不齐。
很多程序员被教育后开始逐渐重视命名,但是受限于英文水平,不知道使用什么合适的英文词汇来命名。有的甚至直接把中文直译为英文的方式命名,或者直接用拼音来命名,反而得不偿失。
命名的重要性我想不需要过于强调。如今的软件开发早已不是求伯君那种单枪匹马的时代。你写下的每一行代码都会在不久的以后被团队的其他人甚至你自己多次查看。如果是个开源项目,那么更会被全球各地的人查看源代码。所以代码的可读性就变得尤为重要。如果读者能够轻松读出你的代码的意图,那么就说明你的命名功底相当扎实。
比如在一个管理系统中,你使用这样的代码: a = b * c
很容易让人摸不着头脑,虽然程序能够正常运作,但恐怕没人敢轻易修改这行他们不了解的代码。而如果修改成为这样: weeklypay =
hours_worked * pay_rate; 那恐怕极少有人不懂这行代码的意图。
糟糕的命名也会导致大量无谓的注释,这是一个很容易跳进去的陷阱。下一段代码怕别人不明白你的意图,那么就加上注释。这貌似是一个很精妙的想法,实际上却南辕北辙。比如以下的注释:
int d; // elapsed time in days
貌似很容易让人读懂,但是问题还是很多。首先注释不能跟着所有的引用,在定义处了解了d的含义,继续往下看的话却很容易忘记;其次代码更新了,很可能会忘记修改注释,反而给把读者带入歧途。
与其用这样的注释,还不如直接重命名: int elapsedTimeInDays; 这样清晰易懂,还不用维护注释,何乐而不为?
那么如何着手来提高的自己的命名技巧那?
首先寻找一份公认的代码规范,并严格按照这样的标准执行。比如google开源了自己内部使用的语言编码规范,我们可以直接拿来使用。比如请看Google
Java的style guide,相当详实。除此之外还有C++等。这里收集了Google对各种语言的编码规范,非常具有参考价值。
标准的代码规范中的每一条都是有胜出的理由,值得我们遵从。但某些命名问题不一定只有一种最好的解决方式,这就需要团队自己建立起约定。比如对于Java单元测试类的命名方式,不同的团队可能不一样。比如有的团队喜欢以should开头,有的喜欢test开头,有的喜欢骆驼命名法,有些喜欢下划线命名法,每种方式有各自的利弊,没有一种能完全脱颖而出,所以需要团队自行制定。一旦确定使用某一种,那么一定要保持一致。
某些命名规范其实是可以进行自动化检查的,比如在Java应用的构建过程中可以引用checkStyle这款插件,对命名进行一些基本的检查,比如方法名、变量名是否遵循了一定模式等。这样在一定程度上可以强制大家遵守某些约定。自己以前曾经写过一篇文章,请参见这里。
最后要在团队中建立起code review的机制,通过code
review来相互监督纠正命名问题,并且这样更容易达成一致的命名约定,方便协作开发。code
review可以采取非正式会议评审的方式。最简单的方式就是每天找个固定时间大家一起聚在一个显示器前review每个人的代码,现场提出问题,当事人记录下来会后更改。这种方式非常高效。另外有的团队在嵌入代码时可能会引入一些代码评审机制,比如pull
request, cherry pick等。这种review方式比较重量级,反馈周期也较长,好处是可以保证最终迁入的代码是没有问题的。
很多语言和框架为了更加可读,都把命名玩出花来了。比如JavaScript生态圈中重要的单元测试工具Jasmine把测试函数以it命名,这样可以与参数连接起来成为一种表意的自然语言:
如何优雅地为程序中的变量和函数命名?
- 不同的代码段采用不同的命名长度。通常来说,循环计数器(loop
counters)采用1位的单字符来命名,循环判断变量(condition/loop
variables)采用1个单词来命名,方法采用1-2个单词命名,类采用2-3个单词命名,全局变量采用3-4个单词命名。
- 对变量采用具体的命名(specific names)方式,”value”, “equals”,
“data”在任何情况下都不是一种有效的命名方式。
- 采用有意义的命名(meaningful names)。变量的名字必须准确反映它的含义和内容。
- 不要用 o_, obj_, m_ 等前缀命名。变量不需要前缀标签来表示自己是一个变量。
- 遵循公司的变量命名规则,在项目中坚持使用同一种变量命名方式。例如txtUserName, lblUserName,
cmbSchoolType等,否则会对可读性造成影响,而且会令查找/替换工具(find/replace tools)不可用。
- 遵循当前语言的变量命名规则,不要不统一(inconsistently)地使用大/小写字母。例如:userName, UserName,
USER_NAME, m_userName, username, …。
以Java为例:
* 类名使用驼峰命名法(Camel Case):VelocityResponseWriter
* 包名使用小写:com.company.project.ui
* 变量使用首字母小写的驼峰命名法(Mixed Case):studentName
* 常量使用大写:MAX_PARAMETER_COUNT = 100
* 枚举类(enum class)采用驼峰命名法,枚举值(enum values)采用大写。
* 除了常量和枚举值以外,不要使用下划线’_’
- 在同一个类不同的场景(contexts)中不要复用变量名。例如在方法、初始化方法和类中。这样做可以提高可读性和可维护性。
- 不要对不同使用目的的变量使用同一个变量名,而是赋予它们不同的名字。这同样对保持可读性和可维护性很重要。
- 变量名不要使用非ASCII字符(non-ASCII chars)。这样做可能会在跨平台使用时产生问题。
-
不要使用过长的变量名(例如50个字符)。过长的变量名会导致代码丑陋(ugly)和难以阅读(hard-to-read),还可能因为字符限制在某些编译器上存在兼容性问题。
- 仅使用一种自然语言(natural language)来命名变量。例如,同时使用德语和英语来命名变量会导致(理解)不一致和降低可读性。
- 使用有意义的方法名。方法名必须准确表达该方法的行为,在多数情况下以动词(verb)开头。(例如:createPasswordHash)
- 遵循公司的方法命名规则,在项目中坚持使用同一种方法命名方式。例如 getTxtUserName(), getLblUserName(),
isStudentApproved(),否则会对可读性造成影响,而且会令查找/替换工具不可用。
- 遵循当前语言的变量命名规则,不要不统一地使用大/小写字母。例如:getUserName, GetUserName, getusername,
…。
以Java为例:
* 方法使用首字母小写的驼峰命名法:getStudentSchoolType
* 方法参数使用首字母小写的驼峰命名法:setSchoolName(String schoolName)
- 使用有意义的方法参数命名,这样做可以在没有文档的情况下尽量做到“自解释(documentate itself)”
总之,命名问题只是整个编码规范中的一小部分,但是起的作用举足轻重,它是判断一个程序员是否专业的必要标准。
匈牙利法java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于匈牙利法国、匈牙利法java的信息别忘了在本站进行查找喔。