複製鏈接
請複製以下鏈接發送給好友

代碼摺疊

鎖定
代碼摺疊是一些文本編輯器,源代碼編輯器和IDE的一個功能,它允許用户有選擇地隱藏和顯示 - “摺疊” - 當前編輯文件的各個部分作為例行編輯操作的一部分。 這允許用户管理大量文本,同時僅查看在任何給定時間特別相關的文本子部分。摺疊的識別可以是自動的,通常基於所討論的計算機語言,縮進或手動的語法,基於帶內標記(保存為源代碼的一部分)或指定帶外, 只在編輯器中。許多編輯器在側邊欄中提供代碼摺疊的公開小部件,在行號旁邊,例如由指向側面(如果摺疊)或向下(如果展開)的三角形指示,或者通過[ - ]框指示 可摺疊(展開)文本和可擴展(摺疊)文本的[+]框。 一些計算機程序員通常使用此功能來管理源代碼文件,並且還經常用於數據比較,以僅查看已更改的文本。
中文名
代碼摺疊
外文名
Code folding

目錄

代碼摺疊歷史

可能第一個摺疊編輯器是用於IBM 370大型機的1974結構化編程工具(SPF)編輯器,它可以根據縮進隱藏線條。 它顯示在字符映射的3270終端上它對像COBOL這樣的冗長語言非常有用。 它演變為交互式系統生產力設施(ISPF)。

代碼摺疊應用

代碼摺疊具有各種使用模式,主要是組織代碼或隱藏較少有用的信息,因此可以專注於更重要的信息。 常見的模式如下。
列提綱
最基本的是,應用程序使用代碼摺疊來概述源代碼,將每個塊摺疊為單行。 這可以只是函數和類之類的頂級塊,嵌套函數和方法之類的嵌套塊,或者所有塊,特別是控制流塊。 這使得人們可以獲得代碼概覽,輕鬆導航和重新排列代碼,並根據需要深入瞭解更多細節,而不會被其他代碼分散注意力。 從視角來看,這允許人們快速查看所有函數的列表(沒有他們的身體),而導航方式則取代了長期函數的廣泛分頁 - 或者搜索目標 - 直接轉到下一個函數。
隱藏樣板代碼
某些語言或庫需要大量的樣板代碼。 這導致代碼非常長,這可能會掩蓋主要觀點。 此外,實用代碼可能會在樣板中丟失。
例如,在Java中,具有getter和setter的單個私有字段至少需要3行,如果每個字段位於單獨的行上:
private String name = null;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
這擴展到10行,傳統的功能斷行和功能之間的間距(包括尾隨換行):
private String name = null;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
使用Javadoc的文檔將其擴展為20行:
/**
* Property <code>name</code> readable/writable.
*/
private String name = null;
/**
* Getter for property <code>name</code>
*/
public String getName() {
return name;
}
/**
* Setter for property <code>name</code>.
* @param name
*/
public void setName(String name) {
this.name = name;
}
如果有很多這樣的字段,結果很容易就是數百行代碼而且“有趣”內容很少 - 代碼摺疊可以將每個字段減少到一行,甚至可以減少所有字段的單行。 此外,如果所有例程字段都被摺疊,但非常規字段(其中getter或setter不僅僅是返回或分配私有字段)沒有摺疊,則更容易看到實質性代碼。
摺疊元數據
元數據可能很長,並且通常不如它描述的數據重要。 摺疊元數據允許主要關注數據,而不是元數據。
在結構化編程中顯示結構或三明治代碼
結構化編程由嵌套的代碼塊組成,長代碼塊(如長切換語句)可能會掩蓋整體結構。 代碼摺疊允許人們看到整體結構並擴展到特定級別。 此外,在某些用途中,特別是嚴格的結構化編程(單功能退出),在查看擴展代碼時很難看到代碼模式。 例如,在結構化編程中的資源管理中,通常獲取資源,然後使用資源獲取代碼塊,最後獲取釋放資源。 如果中間存在長代碼塊,則很難看到獲取/釋放配對,但很容易看出插入的塊是否被摺疊。 類似地,在條件代碼中,如if ... then ... else,輔助塊可能遠離條件語句。
分組代碼
摺疊組可用於對代碼進行分組,可以通過顯式分組 - 類似於將模塊分成多個部分的註釋塊,或者將類成員分成關聯的組 - 或隱式地,例如通過按訪問級別自動對類成員進行分組。
隱藏遺留代碼
遺留代碼或者開發人員不希望在給定時間點查看或更改的任何代碼 -可以摺疊起來,以便程序員可以專注於所考慮的代碼。

代碼摺疊方式

動作或命令
效果
焦點列上的收起按鈕
收起高亮顯示的代碼塊
View |Code Folding |Fold
收起包含當前所選文本的代碼塊
View |Code Folding |Fold Methods/Functions
收起每個方法或函數最外層的代碼塊
View |Code Folding|Fold Comment Blocks
收起所有的多行註釋