java代码说明书 java程序说明书

java游戏的项目说明书应该怎么写?由包→类的解释性说明 。
例:
Project:
-src
-package
-class
目录:
src:项目源代码目录
包:
package:包含xxx代码(功能?业务?其他?具体根据包中所包含的具体实现说明)
类:
class:此类具体作用
java中说明书/开发文档如何编写由于在java开发时我们得到的或者给别人的文件一般都是class文件,不会给出源文件 , 故编写一个简洁易懂的说明书是必须的 。
ps: @param int[] arr 会有警告,可以删掉 int [] 。
用工具解析文档注释:javadoc工具
javadoc -d 目录 -d -author-version ArrayTool.java
有时会提示出错:找不到可以文档化的公共或受保护的类--在class前加一个public即可 。
Java企业软件开发设计说明书如何做1、组织与风格(1).关键词和操作符之间加适当的空格 。(2).相对独立的程序块与块之间加空行(3).较长的语句、表达式等要分成多行书写 。(4).划分出的新行要进行适应的缩进java代码说明书,使排版整齐,语句可读 。(5).长表达式要在低优先级操作符处划分新行,操作符放在新行之首 。(6).循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分 。(7).若函数或过程中的参数较长,则要进行适当的划分 。(8).不允许把多个短语句写在一行中,即一行只写一条语句 。(9).函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格 。注java代码说明书:如果大家有兴趣可以到安安DIY创作室博客,有相关说明性的文章和解释 。2、注解Java 的语法与 C及为相似,那么,你知道 Java 的注释有几种吗?是两种?// 注释一行/* ...... */ 注释若干行不完全对,除java代码说明书了以上两种之外,还有第三种,文档注释:/** ...... */ 注释若干行,并写入 javadoc 文档注释要简单明了 。String userName = null; //用户名边写代码边注释 , 修改代码同时修改相应的注释,以保证注释与代码的一致性 。在必要的地方注释,注释量要适中 。注释的内容要清楚、明了 , 含义准确 , 防止注释二义性 。保持注释与其描述的代码相邻,即注释的就近原则 。对代码的注释应放在其上方相邻位置,不可放在下面 。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释应放在此域的右方;同一结构中不同域的注释要对齐 。变量、常量的注释应放在其上方相邻位置或右方 。全局变量要有较详细的注释 , 包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明 。在每个源文件的头部要有必要的注释信息 , 包括:文件名;版本号;作者;生成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等 。/*** Copy Right Information : Neusoft IIT* Project : eTrain* JDK version used : jdk1.3.1* Comments : config path* Version : 1.01* Modification history :2003.5.1* Sr Date Modified By WhyWhat is modified* 1. 2003.5.2 Kevin Gao new**/在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等/*** Description :checkout 提款* @param Hashtable cart info* @param OrderBean order info* @return String*/public String checkout(Hashtable htCart,OrderBean orderBean)throws Exception{}javadoc注释标签语法@author 对类的说明 标明开发该类模块的作者@version 对类的说明 标明该类模块的版本@see 对类、属性、方法的说明 参考转向 , 也就是相关主题@param 对方法的说明 对方法中某参数的说明@return 对方法的说明 对方法返回值的说明@exception 对方法的说明 对方法可能抛出的异常进行说明3、命名规范定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性 , 减少项目组中因为换人而带来的损失 。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性)较短的单词可通过去掉元音形成缩写;要不然最后自己写的代码自己都看不懂了 , 那可不行 。较长的单词可取单词的头几发符的优先级 , 并用括号明确表达式的操作顺序,避免使用默认优先级 。使用匈牙利表示法Package 的命名Package 的名字应该都是由一个小写单词组成 。package com.neu.utilClass 的命名Class 的名字必须由大写字母开头而其他字母都小写的单词组成,对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母 。public class ThisAClassName{}Class 变量的命名变量的名字必须用一个小写字母开头 。后面的单词用大写字母开头userName , thisAClassMethodStatic Final 变量的命名static Final 变量的名字应该都大写,并且指出完整含义 。/***DBConfig PATH**/public static final StringDB_CONFIG_FILE_PATH =com.neu.etrain.dbconfig;参数的命名参数的名字必须和变量的命名规范一致 。数组的命名数组应该总是用下面的方式来命名:byte[] buffer;而不是:byte buffer[];方法的参数使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:SetCounter(int size){this.size = size;}4、文件样式所有的 Java(*.java) 文件都必须遵守如下的样式规则:版权信息版权信息必须在 java 文件的开头,比如:/** Copyright ? 2000 Shanghai XXX Co. Ltd.* All right reserved.*/其他不需要出现在 javadoc 的信息也可以包含在这里 。Package/Importspackage 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列 。如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理 。package hotlava.net.stats;import java io.*;import java.util.Observable;import hotlava.util.Application;这里 java 。io.* 使用来代替InputStream and OutputStream 的 。Class接下来的是类的注释,一般是用来解释类的 。/*** A class representing a set of packet and byte counters* It is observable to allow it to be watched, but only* reports changes when the current set is complete*/接下来是类定义,包含了在不同的行的 extends 和 implementspublic class CounterSetextends Observableimplements CloneableClass Fields接下来是类的成员变量:/*** Packet counters*/protected int[] packets;public 的成员变量必须生成文档(JavaDoc) 。proceted、private和 package 定义的成员变量如果名字含义明确的话 , 可以没有注释 。存取方法接下来是类变量的存取的方法 。它只是简单的用来将类的变量赋值获取值的话,可以简单的写在一行上 。/*** Get the counters* @return an array containing the statistical data. This array has been* freshly allocated and can be modified by the caller.*/public int[] getPackets() { return copyArray(packets, offset); }public int[] getBytes() { return copyArray(bytes, offset); }public int[] getPackets() { return packets; }public void setPackets(int[] packets) { this.packets = packets; }其它的方法不要写在一行上构造函数接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面) 。访问类型 (public, private 等.) 和 任何 static, final 或 synchronized 应该在一行中 , 并且方法和参数另写一行,这样可以使方法和参数更易读 。publicCounterSet(int size){this.size = size;}克隆方法如果这个类是可以被克隆的,那么下一步就是 clone 方法:publicObject clone() {try {CounterSet obj = (CounterSet)super.clone();obj.packets = (int[])packets.clone();obj.size = size;return obj;}catch(CloneNotSupportedException e) {throw new InternalError(Unexpected CloneNotSUpportedException:e.getMessage());}}类方法下面开始写类的方法:/*** Set the packet counters* (such as when restoring from a database)*/protected finalvoid setArray(int[] r1, int[] r2, int[] r3, int[] r4)throws IllegalArgumentException{//// Ensure the arrays are of equal size//if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)throw new IllegalArgumentException(Arrays must be of the same size);System.arraycopy(r1, 0, r3, 0, r1.length);System.arraycopy(r2, 0, r4, 0, r1.length);}toString 方法无论如何,每一个类都应该定义 toString 方法:publicString toString() {String retval = CounterSet: ;for (int i = 0; idata.length(); i) {retval= data.bytes.toString();retval= data.packets.toString();}return retval;}}main 方法如果main(String[]) 方法已经定义了, 那么它应该写在类的底部.5、代码可读性避免使用不易理解的数字 , 用有意义的标识来替代 。不要使用难懂的技巧性很高的语句 。源程序中关系较为紧密的代码应尽可能相邻 。6、代码性能在写代码的时候,从头至尾都应该考虑性能问题 。这不是说时间都应该浪费在优化代码上,而是java代码说明书我们时刻应该提醒自己要注意代码的效率 。比如:如果没有时间来实现一个高效的算法,那么我们应该在文档中记录下来,以便在以后有空的时候再来实现她 。不是所有的人都同意在写代码的时候应该优化性能这个观点的 , 他们认为性能优化的问题应该在项目的后期再去考虑,也就是在程序的轮廓已经实现了以后 。不必要的对象构造不要在循环中构造和释放对象使用 StringBuffer 对象在处理 String 的时候要尽量使用 StringBuffer 类 , StringBuffer 类是构成 String 类的基础 。String 类将 StringBuffer 类封装了起来,(以花费更多时间为代价)为开发人员提供了一个安全的接口 。当我们在构造字符串的时候,我们应该用 StringBuffer 来实现大部分的工作 , 当工作完成后将 StringBuffer 对象再转换为需要的 String 对象 。比如:如果有一个字符串必须不断地在其后添加许多字符来完成构造,那么我们应该使用StringBuffer 对象和她的 append() 方法 。如果我们用 String 对象代替StringBuffer 对象的话 , 会花费许多不必要的创建和释放对象的 CPU 时间 。大家可以来安安DIY创作室一起讨论 。避免太多的使用 synchronized 关键字避免不必要的使用关键字 synchronized,应该在必要的时候再使用她,这是一个避免死锁的好方法 。7、编程技巧byte 数组转换到 characters为了将 byte 数组转换到 characters,你可以这么做:Hello world!.getBytes();Utility 类Utility 类(仅仅提供方法的类)应该被申明为抽象的来防止被继承或被初始化 。初始化下面的代码是一种很好的初始化数组的方法:objectArguments = new Object[] { arguments };枚举类型JAVA 对枚举的支持不好,但是下面的代码是一种很有用的模板:class Colour {public static final Colour BLACK = new Colour(0, 0, 0);public static final Colour RED = new Colour(0xFF, 0, 0);public static final Colour GREEN = new Colour(0, 0xFF, 0);public static final Colour BLUE = new Colour(0, 0, 0xFF);public static final Colour WHITE = new Colour(0xFF, 0xFF, 0xFF);}这种技术实现了RED, GREEN, BLUE 等可以象其他语言的枚举类型一样使用的常量 。他们可以用 '==' 操作符来比较 。但是这样使用有一个缺陷:如果一个用户用这样的方法来创建颜色 BLACK new Colour(0,0,0)那么这就是另外一个对象 , '=='操作符就会产生错误 。她的 equal() 方法仍然有效 。由于这个原因,这个技术的缺陷最好注明在文档中,或者只在自己的包中使用 。8、编写格式代码样式代码应该用 unix 的格式,而不是 windows 的(比如:回车变成回车 换行)文档化必须用 javadoc 来为类生成文档 。不仅因为它是标准,这也是被各种 java 编译器都认可的方法 。使用 @author 标记是不被推荐的 , 因为代码不应该是被个人拥有的 。缩进缩进应该是每行2个空格. 不要在源文件中保存Tab字符. 在使用不同的源代码管理工具时Tab字符将因为用户设置的不同而扩展为不同的宽度.如果你使用 UltrEdit 作为你的 Java 源代码编辑器的话,你可以通过如下操作来禁止保存Tab字符, 方法是通过 UltrEdit中先设定 Tab 使用的长度室2个空格,然后用 Format|Tabs to Spaces 菜单将 Tab 转换为空格 。页宽页宽应该设置为80字符. 源代码一般不会超过这个宽度, 并导致无法完整显示, 但这一设置也可以灵活调整. 在任何情况下, 超长的语句应该在一个逗号或者一个操作符后折行. 一条语句折行后, 应该比原来的语句再缩进2个字符.{} 对{} 中的语句应该单独作为一行. 例如, 下面的第1行是错误的, 第2行是正确的:if (i0) { i}; // 错误, { 和 } 在同一行if (i0) {i}; // 正确, { 单独作为一行} 语句永远单独作为一行.如果 } 语句应该缩进到与其相对应的 { 那一行相对齐的位置 。括号左括号和后一个字符之间不应该出现空格, 同样, 右括号和前一个字符之间也不应该出现空格. 下面的例子说明括号和空格的错误及正确使用:CallProc( AParameter ); // 错误CallProc(AParameter); // 正确不要在语句中使用无意义的括号. 括号只应该为达到某种目的而出现在源代码中 。下面的例子说明错误和正确的用法:if ((I) = 42) { // 错误 - 括号毫无意义if (I == 42) or (J == 42) then // 正确 - 的确需要括号9、代码编译1.编写代码时要注意随时保存,并定期备份,防止由于断电、硬盘损坏等原因造成代码丢失 。2.同一项目组内,最好使用相同的编辑器,并使用相同的设置选项 。3.合理地设计软件系统目录,方便开发人员使用 。4.打开编译器的所有告警开关对程序进行编译 。5.在同一项目组或产品组中 , 要统一编译开关选项 。6.使用工具软件(如Visual SourceSafe)对代码版本进行维护 。如果大家有不明白的可以到安安DIY创作室留言 。10、可移植性Borland Jbulider 不喜欢 synchronized 这个关键字,如果你的断点设在这些关键字的作用域内的话,调试的时候你会发现的断点会到处乱跳,让你不知所措 。除非必须,尽量不要使用 。换行如果需要换行的话,尽量用 println 来代替在字符串中使用\n 。你不要这样:System.out.print(Hello,world!\n);要这样:System.out.println(Hello,world!);或者你构造一个带换行符的字符串 , 至少要象这样:String newline = System.getProperty(line.separator);System.out.println(Hello worldnewline);PrintStreamPrintStream 已经被不赞成(deprecated)使用,用 PrintWrite 来代替它 。
java计算器程序 附带说明书import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.Math;
public class Calculator implements ActionListener{
JFrame f;
JPanel pa[]=new JPanel[6];
JLabel lb;
JTextField ta;
JButton bt[]=new JButton[22];
public Calculator(){
f=new JFrame("计算器小程序");
Container cp=f.getContentPane();
f.setVisible(true);
f.setSize(400,400);
cp.setLayout(new GridLayout(2,1));
pa[0]=new JPanel(new GridLayout(3,1));
cp.add(pa[0]);
pa[1]=new JPanel(new GridLayout(1,2));
pa[2]=new JPanel(new GridLayout(1,2));
cp.add(pa[2]);
pa[3]=new JPanel(new GridLayout(4,3));
pa[2].add(pa[3]);
pa[4]=new JPanel(new GridLayout(4,2));
pa[2].add(pa[4]);
lb=new JLabel("计算器");
pa[0].add(lb);
ta=new JTextField();
pa[0].add(ta);
pa[0].add(pa[1]);
for(int j=0;j=9;j){
String m="" j;
bt[j]=new JButton(m);
bt[j].addActionListener(this);
pa[3].add(bt[j]);
}
bt[10]=new JButton(" ");
bt[10].addActionListener(this);
pa[3].add(bt[10]);
bt[11]=new JButton("-");
bt[11].addActionListener(this);
pa[3].add(bt[11]);
bt[12]=new JButton("Backspace");
bt[12].addActionListener(this);
pa[1].add(bt[12]);
bt[13]=new JButton("清空");
bt[13].addActionListener(this);
pa[1].add(bt[13]);
bt[14]=new JButton("/");
bt[15]=new JButton("sqrt");
bt[16]=new JButton("*");
bt[17]=new JButton(" /-");
bt[18]=new JButton("pow");
bt[19]=new JButton("1/x");
bt[20]=new JButton(".");
bt[21]=new JButton("=");
for(int j=14;j=21;j) {
bt[j].addActionListener(this);
pa[4].add(bt[j]);
}
f.addWindowListener(new WinLis());
}
public void actionPerformed(ActionEvent e){
for(int i=0;i=9;i){
if(e.getSource()==bt[i]){
String n=ta.getText();
String m=n i;
ta.setText(m);
}
}
if(e.getSource()==bt[10]){
String m=ta.getText();
ta.setText(m " ");
}
if(e.getSource()==bt[11]){
String m=ta.getText();
ta.setText(m "-");
}
if(e.getSource()==bt[12]){
String m=ta.getText();
int n=m.length();
if(n=2){
String c=m.substring(0,n-1);
ta.setText(c);
}
else
ta.setText("");
}
if(e.getSource()==bt[13]){
ta.setText("0");
}
if(e.getSource()==bt[14]){
String m,c;
m=ta.getText();
c=m "/";
ta.setText(c);
}
if(e.getSource()==bt[15]){
String m=ta.getText();
double n=Double.parseDouble(m);
double s=Math.sqrt(n);
String ss="" s;
int sn=ss.indexOf('.');
String cs=ss.substring(sn 1);
int len=cs.length();
if(len1){
ta.setText(ss);
}
else{
String st="" cs.charAt(0);
int it=Integer.parseInt(st);
if(it0)
ta.setText(ss);
else
ta.setText(ss.substring(0,sn));
}
}
if(e.getSource()==bt[16]){
String m=ta.getText();
ta.setText(m "*");
}
if(e.getSource()==bt[17]){
String m=ta.getText();
String mm;
int b=m.indexOf('-');
if(b!=-1){
mm=m.substring(1);
ta.setText(mm);
}
else{
mm=m;
ta.setText("-" mm);
}
}
if(e.getSource()==bt[18]){
String m=ta.getText();
double n=Double.parseDouble(m);
double s=Math.pow(n,2);
String ss="" s;
int sn=ss.indexOf('.');
String cs=ss.substring(sn 1);
int len=cs.length();
if(len1){
ta.setText(ss);
}
else{
String st="" cs.charAt(0);
int it=Integer.parseInt(st);
if(it0)
ta.setText(ss);
else
ta.setText(ss.substring(0,sn));
}
}
if(e.getSource()==bt[19]){
}
if(e.getSource()==bt[20]){
String m=ta.getText();
int nm=m.indexOf(".");
/*if(nm==-1){
ta.setText(m ".");
}*/
ta.setText(m ".");
}
if(e.getSource()==bt[21]){
String m=ta.getText();
int a=m.indexOf(' ');
int p=m.indexOf('.');
if(a!=-1){
if(p==-1){
int s=Integer.parseInt(m.substring(0,a)) Integer.parseInt(m.substring(a 1));
ta.setText("" s);
}
else{
double ds=Double.parseDouble(m.substring(0,a)) Double.parseDouble(m.substring(a 1));
ta.setText("" ds);
}
}
int b=m.indexOf('-');
String bb="" m.charAt(0);
String bm=m.substring(b 1);
int bn=bm.indexOf('-');
if(b!=-1){
if(bb=="-"bn!=-1){
if(p==-1){
int s=Integer.parseInt(m.substring(1,bn)) Integer.parseInt(m.substring(bn 1));
ta.setText("-" s);
}
else{
double ds=Double.parseDouble(m.substring(1,bn)) Double.parseDouble(m.substring(bn 1));
ta.setText("-" ds);
}
}
if(b=1bn==-1){
if(p==-1){
int s=Integer.parseInt(m.substring(0,b))-Integer.parseInt(m.substring(b 1));
ta.setText("" s);
}
else{
double ds=Double.parseDouble(m.substring(0,b))-Double.parseDouble(m.substring(b 1));
ta.setText("" ds);
}
}
}
int c=m.indexOf('*');
if(c!=-1){
int s1=Integer.parseInt(m.substring(0,c));
int s2=Integer.parseInt(m.substring(c 1));
int s=s1*s2;
ta.setText("" s);
}
int d=m.indexOf('/');
if(d!=-1){
int s1=Integer.parseInt(m.substring(0,d));
int s2=Integer.parseInt(m.substring(d 1));
if(s2==0){
ta.setText("除以零公式无效");
}
else{
double s=s1/s2;
ta.setText("" s);
}
}
}
}
class WinLis extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
public static void main(String[] args){
new Calculator();
}
}
我也学java没多长时间 , 写了一个这样的程序,有许多地方还需要完善 , 希望可以帮助你一下,没写注释,我觉得你查一书就能看明白的
java项目 代码结构说明书怎么写接口文档java代码说明书,代码层次(比如公共方法写在哪个class里)java代码说明书,哪些为一大类在一个包下java代码说明书,数据字典,就是介绍你这个项目的架构让后来的人怎么能容易参与开发,交接什么看这个就可以方便些,辅助作用的一个文档一般都是项目经理写
【java代码说明书 java程序说明书】关于java代码说明书和java程序说明书的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读