『壹』 代碼設計時應遵循哪些原則
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表示其他。其結構如下:
塔里木河流域生態環境動態監測系統研究與開發