『壹』 代码设计时应遵循哪些原则
1提高编码质量,代码可读性和可维护性。
2代码编写规范
2.1 删除所有无用代码
2.2 必须给代码添加注释,一个类的注释字数不得小于代码的百分之20%
2.3 建议遵循30秒原则。如果另一个程序员无法在三十秒内无法知道你的函数在做什么,如何做以及为什么要这样做,那么说明你的代码是难于维护的,需要得到提高。
2.4 一个函数的代码长度不允许超过100行,超过一百行的函数建议在不破坏原子性的基础上进行拆分。
2.5 变量都应在方法或者类的头部集中定义
2.6 保证一行代码只做一件事
2.7 使用括号来控制操作符的运算顺序,以免使用java默认的操作符优先级顺序。
2.8 代码格式化:对代码进行格式化,再进行提交。
2.9 接口不允许没有方法或者变量的声明
3. 命名规范
3.1 各种标识符的命名要使用有实际意义的英文单词或者英文单词缩写,缩写词及英文单词要收录在项目的简写词汇表中。切忌使用阿拉伯数字和拼音进行命名。
3.2 类名:首字母大写,每个单词首字母都需要大写。
3.3 方法名:首字母小写,其余单词首字母都需大写。
3.4 全局变量,和常量名称要求全部字母大写。
3.5 参数名称与局部变量基本相同,区别在于参数名称需要加上冠词a ,an 或者在单词结尾以s结束。
4. 注释规范
4.1 注释需要注意的事项:
★注释应该用中文清晰表达意思,应该是程序看起来更清晰,更容易理解
★注释要尽量简明,避免装饰性的注释。
★注释不但要说明做什么,还应当说明为什么要这样做。最好先写注释表明要做什么,再进行编码。
4.2 类的注释
★类的用途,目的。包括其他人感兴趣的介绍。
★已知bug,当然最好是修改好所有的错误,但有时可能暂时没有办法修改,或者没有时间修改。
★开发和维护该类的历史列表,记录每一次修改的作者,日期,修改的内容。
★列举类的各种稳定状态,说明调用成员函数使类的状态产生的变迁(可选)。
★同步问题(可选)
★对主要的算法必须加以说明,主要流程必须给予引导性说明
标准格式:
如果对已经版本话的类进行了修改,需要按照如下格式为每一次修改附加修改历史记录:
// 修改人 + 修改日期
// 修改说明 范例:
// 李四 2010/07/02
// 添加错误数据修改后继续批量保存的处理函数 saveBatch(
@Bind(key = "itemParams", defaultValue = "") String itemParams,
@Bind(key = "pid", defaultValue = "") String pid)。
// 王小二 2010/07/02
4.3 接口注释:
★接口的注释风格基本与类的注释风格相同;
★在别人使用接口之前,必须了解接口所包含的概念。检验一个接口是否应该定义的简单方法是:你是否能★够容易的描述接口的用途;
★接口如何应当和不应当被使用。开发者需要知道该接口如何被使用,也希望知道该接口不能被怎样使用。
4.4 函数的注释
★函数头注释必须包括:函数执行了什么功能,为什么要这样处理;函数处理过程中对对象的哪些属性
★可能进行更改;函数执行前后,对象的状态;
★比较、循环等控制结构加注释(可选);
★在代码的功能并非一目了然的情况下,应当说明为什么要这样做;
★局部变量必须加注释;
★复杂难写的代码必须加注释;
4.5类属性的注释:
★描述域的用途。使别人知道如何去使用它;
★对于有着复杂事物规则的域,可以加入范例来说明。有时候一个简单的小例子,抵的上千言万语;
『贰』 代码设计应遵守那些规则
1. 缩进排版格式:虽然计算机不看格式,但是给人看的时候,格式就很重要了。
2. 对变量或者函数的命名,采用匈牙利命名法。即使用一个小写字母开头,这个小写字母代表变量类型。这个字母后面的命名应该是有意义的单词,每个单词开头大小,其他部分小写。比如:
存储人的姓名的变量名可以用 sName, s代表字符串(string);
存储人的年龄的变量名可以用 iAge, i代表整型(integer);
等等
3. 合理的注释。应该对程序的逻辑给出注释,比如在循环语句的开头注释出这个循环的目的,是用来做什么的。
但是对于很明显的语句,就不要加注释,这样显得多余而且对于阅读程序没有实质性的帮助。比如
// 将“张三”赋值给变量 sName
sName = '张三';
应该避免这样的垃圾注释。
『叁』 代码设计应符合什么样原则
算法复杂度小的,简洁,易维护,易懂,可扩充.
『肆』 结构代码设计的原则
顺序
『伍』 什么是代码设计代码设计有哪些原则
代码设计的原则
『陆』 会计科目代码的设计要遵循哪些原则及种类
会计科目代码的设计要遵循会计完整性,真实性,可理解性原则,包括一级科目及明细科目!
『柒』 算法设计的步骤不包含什么
一、学习内容
1. 算法设计中五大常用算法
1) 分治法
设计思想:将一个难以直接解决的大问题分解成规模较小的相同问题,以便分而治之。
实际的应用:快速排序、归并排序
分治法在每一层递归上的基本步骤:
①分解:将原问题分解为若干个规模较小、相互独立、与原问题形式相同的子问题。
②解决:若子问题规模较小就直接解决,不然就递归解决各个子问题
③合并:将各个子问题的解合并为原问题的解
以快速排序为例理解分治法:
快速排序代码:
public static void quickSort(int a[],int low,int high){
if(low < high){
int pivotpos = partition(a,low,high);
quickSort(a,low,pivotpos-1);
quickSort(a,pivotpos+1,high);
}
}
public static int partition(int a[],int low,int high){
int pivot = a[low];
while (low < high){
while (low < high && a[high] >= pivot){
--high;
}
a[low] = a[high];
while (low < high && a[low] <= pivot){
++low;
}
a[high] = a[low];
}
a[low] = pivot;
return low;
}
①分解:选取基准元素,将左右两侧进行划分
②解决:分别将两个子序列进行快速排序
③合并:将排好的子序列合并
以两路合并排序为例理解分治法:(分治法中的合并在归并排序中体现得更加清楚)
归并排序代码:
public static void merge(int a[],int low,int mid,int high){
int[] temp = new int[high-low+1];
int i = low;
int j = mid+1;
int k = 0;
while (i <= mid && j <= high){
if(a[i] < a[j]){
temp[k++] = a[i++];
}else {
temp[k++] = a[j++];
}
}
//把左边剩下的移到数组中
while (i <= mid){
temp[k++] = a[i++];
}
//把右边剩下的移到数组中
while (j <= high){
temp[k++] = a[j++];
}
//更新原数组
for (int x = 0;x <temp.length;x++){
a[x+low] = temp[x];
}
}
public static int[] mergeSort(int a[],int low,int high){
int mid = (low+high)/2;
if(low < high){
mergeSort(a,low,mid);
mergeSort(a,mid+1,high);
//左右合并
merge(a,low,mid,high);
}
return a;
}
①分解:将一个数组一刀切两半,递归切,直到切成单个元素
②解决:单个元素合并成有序的小数组
③合并:小数组合并成大数组,最终合并完成
2) 动态规划法
设计思想:最优化原理,即一个过程的最优决策具有这样的性质:即无论其初始状态和初始决策如何,其今后诸策略对以第一个决策所形成的状态作为初始状态的过程而言,必须构成最优策略
动态规划法所要满足的条件:
①问题中的状态满足最优化原理
②问题中的状态必须满足无后效性,无后效性指的是下一时刻的状态只与当前的状态 有关而与当前状态的之前状态无关。
动态规划三要素:
①问题的阶段
②每个阶段的状态
③从前一个阶段转换到后一个阶段的递推关系
实际的应用:0/1背包问题 最长公共子串问题
以最长公共子串问题为例理解动态规划法:
定义dp[i][j]表示以A中第i个字符结尾的子串和B中第j个字符结尾的子串的最大公共子串,dp 的大小也为 (n + 1) x (m + 1) ,这多出来的一行和一列是第 0 行和第 0 列,初始化为 0,表示空字符串和另一字符串的子串的最长公共子串。
当我们要求dp[i][j]时,我们要先判断A的第i个元素B的第j个元素是否相同即判断A[i - 1]和 B[j -1]是否相同,如果相同它就是dp[i - 1][j- 1] + 1,相当于在两个字符串都去掉一个字符时的最长公共子串再加 1;否则最长公共子串取0。所以整个问题的初始状态为:
dp[i][0]=0,dp[0][j]=0
相应的状态转移方程为:
实现代码:
public static int findLongest(String A,String B){
int n = A.length();
int m = B.length();
if(m == 0 || n == 0){
return 0;
}
int result = 0;
int[][] dp = new int[n+1][m+1];
//初始状态
for(int i = 0; i <= n;i++){
dp[i][0] = 0;
}
for(int i = 0; i <= m;i++){
dp[0][i] = 0;
}
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
if(A.charAt(i-1) == B.charAt(j-1)){
dp[i][j] = dp[i-1][j-1]+1;
result = Math.max(result,dp[i][j]);
}else {
dp[i][j] = 0;
}
}
}
return result;
}
『捌』 在系统设计阶段,进行代码设计的原则有哪些
依据详细设计、编码规范
『玖』 (37) 下面不属于软件设计原则的是______。 A. 抽象 B. 模块化 C. 自底向上 D. 信息隐蔽
(37)[答案]C
[考点]软件工程基础
[评析]
我们无论是设计与编写代码,无论是画数据流图还是程序流图,习愦性思维都是先有输入才有输出,从下至下。自底向上不是软件设计的原则。
『拾』 代码设计
代码(Code)是人为确定的代表客观事物(实体)名称、属性或状态的符号或者是这些符号的组合。代码设计具有唯一性、规范化、系统化的作用。唯一性是代码设计的首要任务,通过唯一性可以将现实世界中的目标进行区分,便于计算机管理。唯一化虽是代码设计的首要任务,但如果仅仅为了唯一化来编制代码,那么代码编出来后可能是杂乱无章的,使人无法辨认,而且使用起来也不方便,所以在唯一化的前提下还要强调编码的规范化。另外,系统所用代码应尽量标准化。在实际工作中,一般企业所用大部分编码都有国家或行业标准,本系统的代码设计尽量参考使用国家标准及水利部门编制的行业标准规范。
(一)代码设计原则
一个良好的代码设计,既要保证处理问题的需要,又要保证科学管理的需要。本系统在代码设计时主要遵循了以下原则:
唯一性原则:每一代码都唯一地表示某一类、某一级或某一种特定的要素,同时每一类、每一级或每一个特定的要素有专一的代码,亦即建立数据项与代码之间一一对应的关系。
可扩充性原则:必须保证有足够的容量,分类的容量和数据的类别随着系统的发展而增加或减少,编码体系应为此提供足够的空间。
合理性原则:编码体系的结构与信息的分类体系相适应,反应客观系统的层次、机理及其相互联系的特性。
等长性原则:无论分类体系中级数多少,其代码长度相等。
简单性原则:代码的结构尽量简单,长度尽量短,以减少计算机存储空间和数据录入的差错率,同时提高机器处理的效率。
实用性原则:代码的含义清晰,反映出要素的特点,以助记忆。
规范性原则:代码的结构、类型以及编写的格式要统一,便于系统的检索和调用。
(二)代码标准
线分类方法是目前用得最多的一种方法。线分类方法的主要出发点是:首先给定母项,母项下分若干子项,由对象的母项分大集合,由大集合确定小集合……,最后落实到具体对象。线分类法的特点是:结构清晰,容易识别和记忆,易于进行有规律的查找。
本系统所用标准采用线分类法,根据分类编码通用原则,将图形要素根据比例尺进行分类,分幅数据的图幅号采用10位编码的国家标准,地理要素、专题图形要素以及属性信息的编码如下。
1.数字线划图地理要素分类编码
数字地形图包含了1∶1万、1∶5万、1∶10万、1∶50万4种比例尺数据,代码设计的参考依据为GB/15660—1995《1∶5000~1∶100000地形图要素分类与代码》,采用层次分类法,共分为4个层次。根据地理要素类别和性质分为大类,以大类为基础细分为小类,在小类的基础上再细分为一级类和二级类,其中大类码、小类码、一级代码和二级代码分别用数字顺序排列,结构如下:
塔里木河流域生态环境动态监测系统研究与开发
系统包含了4种比例尺数据,各比例尺反映的实体对象信息略有差别,比例尺越大,表现的地理信息越丰富。为便于管理,系统将大类码进行了统一,内容见表4-1。
表4-1 地形信息大类码表
续表
2.土地利用专题图分类编码
土地利用专题图包括了1990年、2000年、2002年、2004年各期采集的数据,系统采用3级分类法,其结构如下:
塔里木河流域生态环境动态监测系统研究与开发
其编码见表4-2。
表4-2 土地利用分类编码表
续表
3.植被专题图分类编码
植被专题图数据包括历史数据和2002年本底调查数据及各期动态监测数据,系统采用二级分类编码,即:大类+小类,各类代码用1位数字表示,具体的分类编码如表4-3。
表4-3 植被分类编码表
4.沙质荒漠化专题图分类编码
沙质荒漠化专题图采用二级分类代码,其大类包括了6项,分类编码见表4-4。
表4-4 沙质荒漠化分类编码表
5.土地类型专题图分类编码
土地类型专题图采用二级分类代码,结构如下:
塔里木河流域生态环境动态监测系统研究与开发
其一级分了4类,二级采用2位数字表示,具体的分类编码见表4-5。
表4-5 土地类型分类编码表
续表
6.土壤专题图
土壤编码设计是建立在1∶50万新疆土壤图基础上,直接按照1∶50万土壤图的分类系统进行编码。建立了五级分类代码,各级代码用1位数字表示,其一级编码如表4-6。
表4-6 土壤一级分类编码表
7.其他专题图形分类编码标准
除以上描述的主要专题图外,系统还有其他大量的专题图形,包括草地分类专题图、胡杨林专题图、地貌类型专题图、土地资源评价专题图、水文地质专题图等,对这些专题图形,系统按照相关的行业标准以及分类编码的原则进行了分类和编码,这里不再赘述。
8.河流
流域面积大于1000km2以及大型和重要中型水库、水闸等工程所在的河流需要编码。河流代码采用拉丁字母(I、O、Z舍弃)和数字的混合编码,共8位,分别表示河流所在流域、水系、编号及类别,其代码定义为ABTFFSSY,其字母表示意义如下:
A:取值A,为SL213—1998《水利工程基础信息代码编制规定》确定的河流分类码。
B:1位字母表示一级流域。
T:1位字母表示二级流域(水系)。
FF:2位数字或字母表示一级支流的编号,取值0~9、A—Y,其中00~09作为干流或干流不同河段的代码。
SS:2位数字或字母分别表示二级支流、二级以下支流的编号,取值0~9、A—Y;若是二级支流时,第二个S为0。
Y:1位数字表示河流类别,具体描述如下:
0:独流入海;
1:国际河流;
2:内陆河流;
3:主要运河;
4:一般运河或主干渠道;
5:一般渠道;
6:汇入上一级河流;
9:其他。
9.水库
全国大型和中型水库代码采用拉丁字母(I、O、Z舍弃)和数字的混合编码,共11位,分别表示水库所在流域、水系、编号及类别,其代码定义为ABTFFSSNNNY,其字母表示意义如下:
A:取值B,为SL231—1998《水利工程基础信息代码编制规定》确定的水库分类码。
B:1位字母表示一级流域。
T:1位字母表示二级流域(水系)。
FF:2位数字或字母表示一级支流的编号,取值0~9、A—Y,其中00~09作为干流或干流不同河段的代码。
SS:2位数字或字母分别表示二级支流、二级以下支流的编号,取值0~9、A—Y;若是二级支流,第二个S为0。
NNN:3位数字或字母表示该区域(流域、水系)内某个水库的编号,N取值0~9、A—Y。
Y:1位数字表示水库的类别,具体描述如下:
1:大(一)型(总库容≥10×108m3);
2:大(二)型(1×108m3≤总库容<10×108m3);
3:中型(0.1×108m3≤总库容<1×108m3);
4:小(一)型(0.01×108m3≤总库容<0.1×108m3);
5:小(二)型(0.001×108m3≤总库容<0.01×108m3);
9:其他。
10.湖泊
范围1km2以上的湖泊需要进行编码,编码方式为组合码,其编码方法用7位字母和数字的组合码分别表示湖泊所在流域(或内流区)、地理位置(省、自治区、直辖市)、水化学性质和面积大小范围,字母“I”和“O”舍去,其代码格式为BSSCNNN,其字母表示意义如下:
B:1位字母码表示流域(或内流区),取值为A—Z,Q:塔里木内流区。
SS:2位数字码表示湖泊所属省、自治区、直辖市。取GB2260—91《中华人民共和国行政区划码》的后两位数(区划代码为3位数,其首位数均为“9”,本代码舍去)即65:新疆维吾尔自治区。
C:一位字母码表示湖泊水化学性质等状况,取值A—G.,其中:
A:淡水湖(湖水矿化度<1g/L);
B:微咸水湖(湖水矿化度1g/L~35g/L);
C:咸水湖(湖水矿化度35g/L~50g/L);
D:盐湖(湖水矿化度>50g/L);
E:干盐湖(地下有晶间卤水或固体盐矿,是重要的沉积矿床);
F:湖水化学性质不明湖泊;
G:时令湖(西部地区季节性蓄水的湖泊)。
NNN:3位数字码表示湖泊面积大小范围,分为5级。同一流域(内流区)内,以省、自治区、直辖市为单元按等级由大到小排列编码,具体如下:
塔里木河流域生态环境动态监测系统研究与开发
11.水闸
全国大型和重点中型水闸代码采用拉丁字母(I、O、Z舍弃)和数字的混合编码,共11位,分别表示水闸所在流域、水系、编号及类别,其代码定义为ABTFFSSNNNY,其字母表示意义如下:
A:取值K,为SL231—1998《水利工程基础信息代码编制规定》确定的水闸分类码。
B:1位字母表示一级流域。
T:1位字母表示二级流域(水系)。
FF:2位数字或字母表示一级支流的编号,取值0~9、A—Y,其中00~09作为干流或干流不同河段的代码。
SS:2位数字或字母分别表示二级支流、二级以下支流的编号,取值0~9、A—Y;若是二级支流时,第二个S为0。
NNN:3位数字或字母表示该区域(流域、水系)内某个水闸的编号,N取值0~9、A—Y。
Y:1位数字表示水闸的类别,具体描述如下:
1.进水闸(分洪闸);
2.退水闸(排涝闸);
3.节制闸;
4.挡潮闸;
5.船闸;
6.渠首(引水)闸;
9.其他。
12.水文测站
水文测站名称依据国家标准《水利工程基础信息代码编制规定》(SL213—1998),进行唯一标识。水文测站代码采用10位字母和数字的组合码,表示水文测站所在流域、水系和编号。其结构如下:
塔里木河流域生态环境动态监测系统研究与开发
其中:
代码第1位字母C,为SL213—1998《水利工程基础信息代码编制规定》确定的水文测站分类码。
代码第2位至第7位代码为河流代码,详细说明参看中国水库名称代码设计说明,第8、9、10位代码为数字或字母,表示该区域(流域、水系)内某个水文测站的编号,取值0~9,A—Y。
13.堤防工程
在此数据库管理系统中,依据国家标准《水利工程基础信息代码编制规定》(SL213—1998)进行堤防的唯一标识。采用11位字母和数字的组合码表示堤防的类别、所在流域、水系和编号,类别1表示左岸,2表示右岸,3表示湖堤,9表示其他,其结构如下:
塔里木河流域生态环境动态监测系统研究与开发
14.泵站
依据国家标准《水利工程基础信息代码编制规定》(SL213—1998)进行泵站的唯一标识。泵站代码采用8位字母和数字的组合码,表示泵站所在流域、水系和编号。其结构如下:
塔里木河流域生态环境动态监测系统研究与开发
15.治河工程
依据国家标准《水利工程基础信息代码编制规定》(SL213—1998)进行治河工程的唯一标识。采用11位字母和数字的组合码,表示治河工程的类别、所在流域、水系和编号;其中类别1表示护岸,2表示护滩,3表示丁坝,4表示裁弯,5表示堵汊,6表示倒流排,7表示管理道路,9表示其他。其结构如下:
塔里木河流域生态环境动态监测系统研究与开发