代碼摺疊
用於隱藏較少有用信息的編輯器
代碼摺疊是一些文本編輯器,源代碼編輯器和IDE的一個功能,它允許用戶有選擇地隱藏和顯示 - “摺疊” - 當前編輯文件的各個部分作為例行編輯操作的一部分。這允許用戶管理大量文本,同時僅查看在任何給定時間特別相關的文本子部分。摺疊的識別可以是自動的,通常基於所討論的計算機語言,縮進或手動的語法,基於帶內標記(保存為源代碼的一部分)或指定帶外,只在編輯器中。許多編輯器在側邊欄中提供代碼摺疊的公開小部件,在行號旁邊,例如由指向側面(如果摺疊)或向下(如果展開)的三角形指示,或者通過[ - ]框指示 可摺疊(展開)文本和可擴展(摺疊)文本的[+]框。一些計算機程序員通常使用此功能來管理源代碼文件,並且還經常用於數據比較,以僅查看已更改的文本。
可能第一個摺疊編輯器是用於IBM 370大型機的1974結構化編程工具(SPF)編輯器,它可以根據縮進隱藏線條。它顯示在字元映射的3270終端上它對像COBOL這樣的冗長語言非常有用。它演變為互動式系統生產力設施(ISPF)。
代碼摺疊具有各種使用模式,主要是組織代碼或隱藏較少有用的信息,因此可以專註於更重要的信息。常見的模式如下。
最基本的是,應用程序使用代碼摺疊來概述源代碼,將每個塊摺疊為單行。這可以只是函數和類之類的頂級塊,嵌套函數和方法之類的嵌套塊,或者所有塊,特別是控制流塊。這使得人們可以獲得代碼概覽,輕鬆導航和重新排列代碼,並根據需要深入了解更多細節,而不會被其他代碼分散注意力。從視角來看,這允許人們快速查看所有函數的列表(沒有他們的身體),而導航方式則取代了長期函數的廣泛分頁 - 或者搜索目標 - 直接轉到下一個函數。
某些語言或庫需要大量的樣板代碼。這導致代碼非常長,這可能會掩蓋主要觀點。此外,實用代碼可能會在樣板中丟失。
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行:
private String name = null;
public String getName() {
return 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 | 收起所有的多行註釋 |