形容遵守環境衛的詞語
傍花隨柳 草長鶯飛 吹簫乞食 春風風人 春風和氣春光明媚 春寒料峭 春暖花開 春色撩人 鵝毛大雪春和景明 春花秋月 春華秋實 春暉寸草 如登春臺秋月春花 秋月春風 皮里春秋 暮云春樹 滿園春色麗藻春葩 口角春風 虎尾春冰 寒木春華 大地回春春雨如油 春蚓秋蛇 春意闌珊 齒牙春色 春蛙秋蟬春誦夏弦 春生夏長 春深似海 春山如笑 春筍怒發春色滿園 春樹暮云 春色撩人 春葩麗藻 春暖花開春露秋霜 春花秋月 春和景明 春風沂水 春暉寸草唇色滿園 春山如笑 春深似海 春生秋殺 春生夏長秋收冬藏 春筍怒發 春蛙秋蟬 春意盎然 春意闌珊。
最實用的10個重構小技巧排行榜,您都用過哪些呢
本次我們拋開JAVA虛擬機源碼這些相對底層的東西,LZ來與各位探討一下幾個代碼重構的小技巧,這些內容部分來自于書籍當中,部分來自于LZ維護項目當中的一些實踐經驗。
如果猿友們曾經用過這種手法,也不妨參與到文章的留言當中,將你的小心得、小體會共享與他人,也可以拿來沖擊LZ自己定義的排行榜,LZ不甚歡迎。 重構的手法有很多種,相對而言,一篇文章的涵蓋量自然是無法提到所有,LZ這里也只能提出一些平時會經常使用的一些手法,像一些比較高端的手法,各位有興趣的可以去找一些專門的書籍涉獵。
另外還有一點,由于LZ是做JAVA開發的,因此部分重構小技巧可能與JAVA語言,或者說與面向對象的語言息息相關,不過大多數技巧,無論是面向過程的語言,還是面向對象的語言,都是可以相互通用的。 廢話不多說,我們來看看實用重構技巧的排行榜吧。
No.1:重復代碼的提煉 重復代碼是重構收效最大的手法之一,進行這項重構的原因不需要多說。它有很多很明顯的好處,比如總代碼量大大減少,維護方便,代碼條理更加清晰易讀。
它的重點就在于尋找代碼當中完成某項子功能的重復代碼,找到以后請毫不猶豫將它移動到合適的方法當中,并存放在合適的類當中。 小實例 class BadExample { publicvoid someMethod1(){ //code *n("重復代碼");/* 重復代碼塊 *///code } publicvoid someMethod2(){ //code *n("重復代碼");/* 重復代碼塊 *///code } } /* ---------------------分割線---------------------- */class GoodExample { publicvoid someMethod1(){ //code someMethod3(); //code } publicvoid someMethod2(){ //code someMethod3(); //code } publicvoid someMethod3(){ *n("重復代碼");/* 重復代碼塊 */ } } No.2:冗長方法的分割 有關冗長方法的分割,其實有時候與重復代碼的提煉是有著不可分割的關系的,往往在我們提煉重復代碼的過程中,就不知不覺的完成了對某一個超長方法的分割。
倘若在你提煉了大部分的重復代碼之后,某一些冗長方法依然留存,此時就要靜下心來專門處理這些冗長方法了。 這其中有一點是值得注意的,由于我們在分割一個大方法時,大部分都是針對其中的一些子功能分割,因此我們需要給每一個子功能起一個恰到好處的方法名,這很重要。
可以說,能否給方法起一個好名字,有時候能體現出一個程序猿的大致水準。 小實例 class BadExample { publicvoid someMethod(){ //function[1] //function[2] //function[3] } } /* ---------------------分割線---------------------- */class GoodExample { publicvoid someMethod(){ function1(); function2(); function3(); } privatevoid function1(){ //function[1] } privatevoid function2(){ //function[2] } privatevoid function3(){ //function[3] } } No.3:嵌套條件分支的優化(1) 大量的嵌套條件分支是很容易讓人望而卻步的代碼,我們應該極力避免這種代碼的出現。
盡管結構化原則一直在說一個函數只能有一個出口,但是在這么大量的嵌套條件分支下,讓我們忘了這所謂的規則吧。 有一個專業名詞叫衛語句,可以治療這種恐怖的嵌套條件語句。
它的核心思想是,將不滿足某些條件的情況放在方法前面,并及時跳出方法,以免對后面的判斷造成影響。經過這項手術的代碼看起來會非常的清晰,下面LZ就給各位舉一個經典的例子,各位可以自行評判一下這兩種方式,哪個讓你看起來更清晰一點。
小實例 class BadExample { publicvoid someMethod(Object A,Object B){ if (A != null) { if (B != null) { //code[1] }else { //code[3] } }else { //code[2] } } } /* ---------------------分割線---------------------- */class GoodExample { publicvoid someMethod(Object A,Object B){ if (A == null) { //code[2]return; } if (B == null) { //code[3]return; } //code[1] } } No.4:嵌套條件分支的優化(2) 此處所說的嵌套條件分支與上面的有些許不同,它無法使用衛語句進行優化,而應該是將條件分支合并,以此來達到代碼清晰的目的。由這兩條也可以看出,嵌套條件分支在編碼當中應當盡量避免,它會大大降低代碼的可讀性。
下面請尚且不明覺厲的猿友看下面這個典型的小例子。 小實例 class BadExample { publicvoid someMethod(Object A,Object B){ if (A != null) { if (B != null) { //code } } } } /* ---------------------分割線---------------------- */class GoodExample { publicvoid someMethod(Object A,Object B){ if (A != null && B != null) { //code } } } No.5:去掉一次性的臨時變量 生活當中我們都經常用一次性筷子,這無疑是對樹木的摧殘。
然而在程序當中,一次性的臨時變量不僅是對性能上小小的摧殘,更是對代碼可讀性的褻瀆。因此我們有必要對一些一次性的臨時變量進行手術。
小實例 class BadExample { privateint i; publicint someMethod(){ int temp = getVariable(); return temp * 100; } publicint getVariable(){ return i; } } /* ---------------------分割線---------------------- */class GoodExample { privateint i; publicint someMethod(){ return getVariable() * 100; } publicint getVariable(){ return i; } } No.6:消除過長參數列表 對于一些傳遞了大批參數的方法,對于追求代碼整潔的程序。
編程序常用英語單詞是什么
application 應用程式 應用、應用程序 application framework 應用程式框架、應用框架 應用程序框架 architecture 架構、系統架構 體系結構 argument 引數(傳給函式的值)。
叁見 parameter 叁數、實質叁數、實叁、自變量 array 陣列 數組 arrow operator arrow(箭頭)運算子 箭頭操作符 assembly 裝配件 assembly language 組合語言 匯編語言 assert(ion) 斷言 assign 指派、指定、設值、賦值 賦值 assignment 指派、指定 賦值、分配 assignment operator 指派(賦值)運算子 = 賦值操作符 associated 相應的、相關的 相關的、關聯、相應的 associative container 關聯式容器(對應 sequential container) 關聯式容器 atomic 不可分割的 原子的 attribute 屬性 屬性、特性 audio 音訊 音頻 A.I. 人工智慧 人工智能 background 背景 背景(用於圖形著色) 后臺(用於行程) backward compatible 回溯相容 向下兼容 bandwidth 頻寬 帶寬 base class 基礎類別 基類 base type 基礎型別 (等同於 base class) batch 批次(意思是整批作業) 批處理 benefit 利益 收益 best viable function 最佳可行函式 最佳可行函式 (從 viable functions 中挑出的最佳吻合者) binary search 二分搜尋法 二分查找 binary tree 二元樹 二叉樹 binary function 二元函式 雙叁函數 binary operator 二元運算子 二元操作符 binding 系結 綁定 bit 位元 位 bit field 位元欄 位域 bitmap 位元圖 位圖 bitwise 以 bit 為單元逐一┅ bitwise copy 以 bit 為單元進行復制;位元逐一復制 位拷貝 block 區塊,區段 塊、區塊、語句塊 boolean 布林值(真假值,true 或 false) 布爾值 border 邊框、框線 邊框 brace(curly brace) 大括弧、大括號 花括弧、花括號 bracket(square brakcet) 中括弧、中括號 方括弧、方括號 breakpoint 中斷點 斷點 build 建造、構筑、建置(MS 用語) build-in 內建 內置 bus 匯流排 總線 business 商務,業務 業務 buttons 按鈕 按鈕 byte 位元組(由 8 bits 組成) 字節 cache 快取 高速緩存 call 呼叫、叫用 調用 callback 回呼 回調 call operator call(函式呼叫)運算子調用操作符 (同 function call operator) candidate function 候選函式 候選函數 (在函式多載決議程序中出現的候選函式) chain 串鏈(例 chain of function calls) 鏈 character 字元 字符 check box 核取方塊 (i.e. check button) 復選框 checked exception 可控式異常(Java) check button 方鈕 (i.e. check box) 復選按鈕 child class 子類別(或稱為derived class, subtype) 子類 class 類別 類 class body 類別本體 類體 class declaration 類別宣告、類別宣告式 類聲明 class definition 類別定義、類別定義式 類定義 class derivation list 類別衍化列 類繼承列表 class head 類別表頭 類頭 class hierarchy 類別繼承體系, 類別階層 類層次體系 class library 類別程式庫、類別庫 類庫 class template 類別模板、類別范本 類模板 class template partial specializations 類別模板偏特化 類模板部分特化 class template specializations 類別模板特化 類模板特化 cleanup 清理、善后 清理、清除 client 客端、客戶端、客戶 客戶 client-server 主從架構 客戶/服務器 clipboard 剪貼簿 剪貼板 clone 復制 克隆 collection 群集 集合 combo box 復合方塊、復合框 組合框 command line 命令列 命令行 (系統文字模式下的整行執行命令) communication 通訊 通訊 compatible 相容 兼容 compile time 編譯期 編譯期、編譯時 compiler 編譯器 編譯器 component 組件 組件 composition 復合、合成、組合 組合 computer 電腦、計算機 計算機、電腦 concept 概念 概念 concrete 具象的 實在的 concurrent 并行 并發 configuration 組態 配置 connection 連接,連線(網絡,資料庫) 連接 constraint 約束(條件) construct 構件 構件 container 容器 容器 (存放資料的某種結構如 list, vector。) containment 內含 包容 context 背景關系、周遭環境、上下脈絡 環境、上下文 control 控制元件、控件 控件 console 主控臺 控制臺 const 常數(constant 的縮寫,C++ 關鍵字) constant 常數(相對於 variable) 常量 constructor(ctor) 建構式 構造函數 (與class 同名的一種 member functions) copy (v) 復制、拷貝 拷貝 copy (n) 復件, 副本 cover 涵蓋 覆蓋 create 創建、建立、產生、生成 創建 creation 產生、生成 創建 cursor 游標 光標 custom 訂制、自定 定制 data 資料 數據 database 資料庫 數據庫 database schema 數據庫結構綱目 data member 資料成員、成員變數 數據成員、成員變量 data structure 資料結構 數據結構 datagram 資料元 數據報文 dead lock 死結 死鎖 debug 除錯 調試 debugger 除錯器 調試器 declaration 宣告、宣告式 聲明 deduction 推導(例:template argument deduction) 推導、推斷 default 預設 缺省、默認 defer 延緩 推遲 define 定義 預定義 definition 定義、定義區、定義式 定義 delegate 委派、委托、委任 委托 delegation (同上) demarshal 反編列 散集 dereference 提領(取出指標所指物體的內容) 解叁考 dereference operator dereference(提領)運算子 * 解叁考操作符 derived class 衍生類別 派生類 design by contract 契約式設計 。
使用switch語句 編寫
怎么你問相同的問題
#include "stdio.h"
#include "iostream.h"
void main()
{
int age; //定義年齡
cout<<;"請輸入你的年齡:";
cin>>age; //用戶輸入年齡
switch(age)
{
case 1:
{
cout<<;"你1歲已被分到幼兒園小班"<<endl;
break;
}
case 2:
{
cout<<;"你2歲已被分到幼兒園小班"<<endl;
break;
}
case 3:
{
cout<<;"你3歲已被分到幼兒園小班"<<endl;
break;
}
case 4:
{
cout<<;"你4歲已被分到幼兒園中班"<<endl;
break;
}
case 5:
{
cout<<;"你5歲已被分到幼兒園大班"<<endl;
break;
}
case 6:
{
cout<<;"你6歲已被分到幼兒園大班"<<endl;
break;
}
}
}
Java是不是需要盡量把代碼拆分成一個一個方法啊?教程里是把for循環
哈,你的寫在一起是沒問題的.
在Clean code(整潔代碼)里面,提供把功能拆分和抽取,比如你的方法里面有一個判斷字符串是否為空的代碼:
if(null==str||"".equals(*()){。.}而你這一段代碼,在其他地方也經常復用,那么你就可以抽取出去成為一個工具類了
public class StrUtil{
public boolean isEmpty(String str){
return null==str ||"".equals(*());
}
}那么在你之前的代碼里面可以使用,以下的來代替
if(*y(str)){
。.
}這樣子,你的代碼重用性和可閱讀性就提高不少了.
要怎樣子才抽取出去呢? 最簡單的2點
1. 同一段代碼多次重用.
2. 職能單一,一個方法只實現一種功能
詳細資料,推薦書籍: