zetavg/zh-tw-wikipedia huggingface dataset:
代盾蜾蠃属

**代盾蜾蠃屬**（學名：_Antodynerus_）是蜾蠃科下的一個屬。

## 下屬物種

本屬包括以下物種：

* _Antodynerus aethiopicus_ (de Saussure, 1855)
* _Antodynerus alboniger_ (Bequaert, 1918)
* _Antodynerus angolensis_ (Rad., 1881)
* _Antodynerus ardens_ (Guérin, 1848)
* _Antodynerus aureosericeus_ (Meade-Waldo, 1915)
* _Antodynerus bellatulus_ (de Saussure, 1853)
* _Antodynerus breviclypeus_ Selis, 2020
* _Antodynerus caviventris_ (Kirsch, 1878)
* _Antodynerus cnemophilus_ (Cameron, 1910)
* _Antodynerus coenii_ (Giordani Soika, 1934)
* _Antodynerus congolensis_ (Bequaert, 1918)
* _Antodynerus desparatus_ (Bequaert, 1918)
* _Antodynerus desperatus_ (Bequaert, 1918)
* _Antodynerus dictatorius_ (Giordani Soika, 1935) Selis, 2020
* _Antodynerus effosoides_ Giordani Soika, 1989
* _Antodynerus effossoides_ Giordani Soika, 1989
* _Antodynerus effosus_ Giordani Soika, 1989
* _Antodynerus elleri_ (Giordani Soika, 1937)
* _Antodynerus flavescens_ (Fabricius, 1775)
* _Antodynerus gribodoi_ (Schulthess, 1922)
* _Antodynerus iactans_ (Giordani Soika, 1937)
* _Antodynerus ignaruris_ Kohl, 1907
* _Antodynerus igneus_ Gusenleitner, 2004
* _Antodynerus ignoratus_ Gusenleitner, 2007
* _Antodynerus imitator_ Selis, 2020
* _Antodynerus incognitus_ (Giordani Soika, 1942)
* _Antodynerus incomparabilis_ Giordani Soika, 1970
* _Antodynerus incomperabilis_ Giordani Soika, 1970
* _Antodynerus indecorus_ (Cameron, 1910)
* _Antodynerus infucatus_ (Giordani Soika, 1935)
* _Antodynerus infuscatus_ (Giordani Soika)
* _Antodynerus kelneri_ Giordani Soika, 1965
* _Antodynerus lesnei_ (Giordani Soika, 1935)
* 緣代盾蜾蠃 _Antodynerus limbatus_ (de Saussure, 1852)，也拼作 _Antodynerus limbatum_
* _Antodynerus lobatus_ Giordani Soika, 1983
* _Antodynerus lugubris_ (Meade-Waldo, 1915)
* _Antodynerus luteoniger_ (Giordani Soika, 1942)
* _Antodynerus magadensis_ (Giordani Soika, 1937)
* _Antodynerus meridionalis_ (de Saussure, 1862)
* _Antodynerus multicolor_ (de Saussure, 1853)
* _Antodynerus mutabilis_ (de Saussure, 1863)
* _Antodynerus mutans_ (de Saussure, 1856)
* _Antodynerus nigeriensis_ (Giordani Soika, 1942)
* _Antodynerus nyassae_ (Kirsch, 1878)
* _Antodynerus oneili_ (Cameron, 1905)
* _Antodynerus oogaster_ (Gribodo, 1895)
* _Antodynerus oppugnator_ (Giordani Soika, 1937)
* _Antodynerus proterrens_ (Giordani Soika, 1934)
* _Antodynerus punctatipennis_ (de Saussure, 1852)
* _Antodynerus radialis_ (de Saussure, 1855)
* _Antodynerus scottianus_ (Giordani Soika)
* _Antodynerus sheffieldi_ (Meade-Waldo, 1915)
* _Antodynerus signiferus_ (Cameron, 1910)
* _Antodynerus somalicus_ Giordani Soika, 1989
* _Antodynerus spoliatus_ (Cameron, 1910)
* _Antodynerus stevensonianus_ (Giordani Soika, 1942)
* _Antodynerus stiraspis_ (Cameron, 1910)
* _Antodynerus thomensis_ (Giordani Soika, 1942)
* _Antodynerus versicolor_ (Kirby, 1900)
* _Antodynerus wellmani_ (Meade-Waldo, 1910)
* _Antodynerus wellmanoides_ (Giordani Soika, 1940)

## 參考文獻
代码

在通信和資訊處理中，**代碼**（**code**）是指一套轉換資訊的規則系統，例如將一個字母、單詞、聲音、圖像或手勢轉換為另一種形式或表達，有時還會縮短或加密以便通過某種信道或儲存媒體通信。一個最早的例子是語言的發明，它使人可以通過說話將他看到、聽到、感受到或想到的事情表達給其他人。但是，說話的通信範圍局限於聲音可以有效傳播、辨識的範圍，並且發言只能傳達給現有的聽眾。將言談轉化為視覺符號的寫作擴大了跨越時間、空間的通信表達。代碼有時亦稱**代號**等。

而編碼（encoding）能將源頭的資訊轉化為便於通信或儲存的符號。解碼（Decoding）則是將其逆向還原的過程，將代碼符號轉化回收件人可以理解的形式。

編碼的其中一個原因是在平實語言、口語或寫作難以實現實現的情況下進行通信。例如，旗語可以用特定標記表達特定資訊，站在遠處的另一個人可以解讀標識來重現該資訊。

## 理論

在資訊理論和電腦科學中，代碼通常被認為是一個獨特的從一個源字母表表示成符號的演算法，通過_編碼的_字串，這些字串可能在一些其他的目標字母表中。通過連接編碼字串獲得在源字母表上表示符號序列的擴充代碼。

在給出一個數學上精確的定義之前，這是一個簡短的例子。對映

$$
C=\{a\mapsto 0,b\mapsto 01,c\mapsto 011\}
$$

是一個代碼，其源字母表是集合 $\{a,b,c\}$ ，其目標字母表是集合 $\{0,1\}$ 。使用擴充代碼，編碼後的字串 0011001 可以被分組成代碼字 0 011 0 01，這些代碼又可以解碼為源符號序列 _acab_。

使用形式語言理論中的術語，這個概念的精確數學定義如下：讓 S 和 T 是兩個有限集，分別稱為源字母表和目標字母表。 **代碼** $C:S\rightarrow T^{*}$ 是將每個符號從 S 對映到 T 上的符號序列的總函式。 $C$ 的擴充 $C'$ 是 $S^{*}$ 到 $T^{*}$ 的同態，它自然地把每個源符號的序列對映到目標符號序列。

### 可變長度編碼

在本節中，我們考慮從某個字典中的代碼字對每個源（明文）字元進行編碼的代碼，這些代碼字的連接為我們提供了已編碼的字串。當明文字元具有不同的概率時，可變長度代碼特別有用；另見熵編碼。

_字首代碼_是具有「字首屬性」的代碼：系統中不存在作為集合中任何其他有效代碼字的字首（開始）的有效代碼字。霍夫曼編碼是最知名的用於匯出字首碼的演算法。即使代碼不是由霍夫曼演算法產生的，字首代碼也被廣泛稱為「霍夫曼代碼」。字首代碼的其他範例是國家呼叫代碼、ISBN 的國家和出版商部分，以及 UMTS WCDMA 3G 無線標準中使用的輔助同步代碼。

卡夫不等式給出了字首碼中可能存在的碼字長度集。實際上，任何唯一可解碼的一對多代碼，不一定是字首代碼，都必須滿足卡夫不等式。

### 錯誤糾正編碼

代碼也可用於以更耐受傳輸或儲存錯誤的方式表示資料。 這種所謂的糾錯碼通過在儲存（或傳輸）的資料中包含精心設計的冗餘來工作。 範例包括漢明碼、里德 - 所羅門碼、里德 - 穆勒碼、哈達碼代碼、BCH 碼、渦輪碼、二進位戈萊碼、Goppa 碼、低密度奇偶檢查碼和時空碼。 可以最佳化錯誤檢測代碼以檢測_突發錯誤_或_隨機錯誤_。

## 例子

### 溝通中為簡潔使用的代碼

### 字元編碼

目前最廣為人知並被使用的資料通信代碼（也稱字元表示）是 ASCII。 它用 7 位元二進位數字表示 128 個字元 —— 即由 7 個為 1 或 0 的位元組成。還有許多其他編碼用一個位元組表示每個字元 (通常被稱為頁碼), 整數碼位 (Unicode) 或者一個位元組序列 (UTF-8).

### 遺傳密碼

### 哥德爾代碼

在數學中，哥德爾代碼是哥德爾不完備定理的基礎。其中的想法是將數學符號對映到一個自然數 （使用一個哥德爾數）。

### 其他

### 密碼學

## 其他例子

編碼的其他例子包括：

* 編碼 (認知中) 是解釋傳入刺激的基本感知過程； 從技術上講，它是一個複雜的、多階段的過程，將相對客觀的感官輸入（如光、聲）轉化為主觀上有意義的體驗。
* 內容格式 是一種為了將一種特定類型的資料轉換成資訊的特定編碼格式。
* 文字編碼使用標示語言來標記結構和其他文字的特性以方便電腦處理。（另見文字編碼規範。）
* 正式語言 A 的語意編碼非正式語言 B 是一種使用語言 B 表示語言 A 的所有術語（例如程式或描述）的方法。
* 資料壓縮，將訊號轉換為針對傳輸或儲存最佳化的代碼，通常使用編解碼器完成。
* 神經編碼是資訊在神經元中表達的方式。
* 記憶編碼，將感覺轉化為記憶的過程。
* 電視編碼：NTSC, PAL 和 SECAM

解碼的其他例子包括：

* 解碼 (電腦科學)
* 解碼方法，通信理論中用於解碼通過噪聲信道傳送的碼字的方法
* 數位訊號處理，研究數位訊號和這些訊號的處理方法
* 數位類比轉換器，使用類比電路進行解碼操作
* 單詞解碼，使用拼音將其解碼為印刷圖案，將它們譯為語言讀音

## 代碼與首字母縮略詞

首字母縮略字和縮寫可以認為是一種代碼，並且某種意義上所有語言和書寫系統都是人類思維的代碼。

## 參見

* 非語意寫作
* 密碼 (密碼學)
* 代碼 (符號學)
* 裝置代碼
* 量子錯誤糾正
* 符號學
* 代號（Code name）

## 參考資料
代码211

《**211 緊急呼救**》（英語：_211_）是一部 2018 年美國搶劫動作片，由耶克・沙克萊頓執導並與約翰・李巴斯（John Rebus）共同撰寫劇本。其主演包括尼可拉斯・凱吉、科里・哈德里克、小麥可・雷尼（Michael Rainey Jr.）、歐利・普費弗及衛斯頓・凱吉（Weston Cage）。該片於 2018 年 6 月 8 日在美國上映。

## 劇情

故事敘述一名老鳥警察在退休前夕隨著搭檔及法定隨同的少年在街區巡邏，但三人卻遇上了一場銀行搶案，而使他們在與劫匪們交火時陷入困境。

## 演員

* 尼可拉斯・凱吉 飾 麥克・錢德勒（Mike Chandler）
* 科里・哈德里克 飾 漢森（Hanson）
* 小麥可・雷尼（Michael Rainey Jr.） 飾 肯尼（Kenny）
* 歐利・普費弗 飾 特雷（Tre）
* 衛斯頓・凱吉（Weston Cage） 飾 路克（Luke）
* 蘇菲・斯克爾頓 飾 麗莎・麥艾維（Lisa MacAvoy）
* 德韋恩・卡麥隆 飾 史提夫・麥艾維（Steve MacAvoy）

## 製作

2017 年 1 月 27 日，尼可拉斯・凱吉加入搶劫電影《211 緊急呼救》的演出。2017 年 4 月，當該片於保加利亞拍攝時，凱吉在過程中不慎跌斷腳踝，使他得回到紐約市接受治療手術，需休息至少兩週才能回歸拍攝。

## 參考文獻

## 外部連結

* 網際網路電影資料庫（IMDb）上《211 緊急呼救》的資料（英文）
* 豆瓣電影上《211 緊急呼救 211 (2018)》的資料 （簡體中文）
* 開眼電影網上《211 緊急呼救 211》的資料（繁體中文）
代码_(2001年电影)

《**代碼**》（英語：_Code of Honor_）是 2001 年芬蘭的一部關於 GNU/Linux 的英語紀錄片，其中介紹了自由軟體運動中卓有貢獻的一些人物。

## 特別倡導者

電影中的開源倡導者或程式設計師

* 林納斯・托瓦茲
* 理察・斯托曼
* 艾倫・考克斯
* 埃里克・雷蒙
* Robert "Bob" Young
* Jon "maddog" Hall
* 曹子德（Theodore Y. "Ted" Ts'o）
* 大衛・米勒
* 米格爾・德伊卡薩
* Linux 歷史
* Eric Allman
* Andrew Leonard
* 拉里・奧古斯丁
* MARTTI TIENARI
* SUN YU-FANG
* LIANG CHANGTAI
* JAY SALZENBERG

## 參見

* GNU/Linux（作業系統）
* 作業系統革命（2001 年電影）

## 外部連結

* 官方網站（頁面存檔備份，存於網際網路檔案館）
* The Code（頁面存檔備份，存於網際網路檔案館） on Google Video
* 網際網路電影資料庫（IMDb）上《The Code》的資料（英文）
代码克隆

**代碼重複**（英文：**duplicate code**，也叫**代碼複製**）在程式設計中表示一段原始碼在一個程式，或者一個團體所維護的不同程式中重複出現，是不希望出現的現象。為避免巧合，只有一定數量的代碼完全相同才能判定為代碼重複。重複代碼的段落有時被稱為代碼複製，自動檢測代碼重複的過程叫做**複製檢測**。

## 產生

產生代碼重複可能有以下幾個原因：

* 因為某段代碼能用就複製貼上過來。多數情況下代碼會有少許不同，如變數名稱改變或代碼增刪。
* 因為要實現與已有功能類似的功能，開發者獨立寫出與別處相似的代碼。研究表明獨立撰寫的代碼在語法上不一定相似。
* 抄襲，即不經允許複製代碼，且未列出著作權歸屬。
* 代碼系自動生成。這時可能需要重複代碼以提高效能或方便開發。註：這裡代碼重複是指碼產生器自動生成的代碼，而非生成器本身的代碼。

## 成本與效益

不恰當的代碼重複表明程式設計不良，例如缺少抽象。這會導致程式過長，錯誤更多，進而難以維護，因為需要人工尋找並修改重複的部分。然而由於種種原因，適當的代碼重複難以避免，例如給與已有裝置相似的新裝置寫驅動程式時，複製代碼能使開發更便捷。

當複製具有軟體漏洞的代碼時，如果開發人員不知道這樣的副本，則複製的代碼中可能會繼續存在漏洞。代碼重構可以改善許多軟體的度量衡標準，例如原始碼行數，循環複雜度和耦合度。這可能會縮短編譯時間，降低認知負載，減少人為錯誤，減少被遺忘或被忽視的代碼。

但並不是所有的代碼重複都可以被重構。如果程式語言提供不充分或過於複雜的抽象，複製或許是具有速度效益上的解決方式，特別是修改代碼使用的編輯器如有支援區塊 (行) 編輯的功能。而且，重構時破壞代碼的風險可能會超過維護的效益。重複的代碼似乎不會比不重複的代碼更容易出錯。使用開源方式共享代碼組件，而不是在軟體組態管理的倉儲庫之間複製它們，也可以減少複製。

## 檢測

檢測代碼重複的手段有：

* Baker 演算法
* Rabin–Karp 字串搜尋演算法
* 利用抽象語法樹
* 視覺化檢測器
* 矩陣計數檢測

## 例子

以計算整數陣列的平均值的代碼片段為例

這兩個迴圈可以覆寫為一個函式：

利用以上函式可以寫出無重複的原始碼

## 參見

* 代碼異味
* 一次且僅一次
* 抽象化 (電腦科學)

## 參考資料
代码共享

**代碼共享**（英語：**Code-sharing**），台灣稱為**班號共用**，又稱「**共掛航班**」、「**聯營航班**」，是現代航空業其中一種相當普遍的經營模式，由多家航空公司共同經營某一航線，常見於以接駁長途航班的短途航班上，也偶見於以商務旅客為主、班次頻密的短途航班。簡單來說，就是航空公司之間的「買位」制度，讓未有飛行該航線的航空公司，能通過購入其他航空公司航班的機票再出售予顧客。班號共用的協議是建基於過往聯程機票的制度上，並進一步發展成全球性的航空公司聯盟。目前國際上三大航空公司聯盟 —— 星空聯盟、天合聯盟及寰宇一家，最初都是由原本就有班號共用合作的航空公司組成聯盟的核心集團，再逐漸吸收新夥伴而擴大成今日的規模。

## 說明

例如國泰航空由香港飛往新加坡的 CX691 航班與美國航空 AA8890 航班採用班號共用，這航班是由國泰航空的飛機與空勤人員營運，美國航空不會參與運營，但會替這航班賣票，旅客可以從美國到香港轉乘 AA8890 航班（亦即國泰 CX691）前往新加坡。

## 好處

班號共用可讓各航空公司間達成同業合作，是旅客及雙方航空公司都有利的經營方式，具有「魚幫水，水幫魚」的多贏意味。

**旅客方面**

* 提供更清晰的票務資料 - 所有資料均以同一航空公司的格式發出，而班號共用航班的飛行時間通常能夠非常順暢地接駁長途航班，能夠縮短中轉時間。
* 提供更優質的中轉支援服務 - 一旦長途航班延誤以致旅客無法趕上班號共用航班，航空公司會提供有關的支援，如安排入住酒店、賠償餐券及機票重新劃位等，而行李同樣會獲得適當的處理。

**航空公司方面**

* 擴大航線網絡 - 就一些低客量的長途航點，航空公司無需自行營運便能提供服務。例如香港 - 聖地牙哥航線，國泰航空便能通過與智利國家航空的班號共用航班提供來往洛杉磯 - 聖地牙哥的服務，再通過自行營運的香港 - 洛杉磯航班，出售香港經洛杉磯至聖地牙哥的機票。
* 提升航班上座率 - 由於前往低客量長途航點的乘客都會乘搭同一長途航班再轉乘班號共用航班，因此長途航班的上座率會得以提升；而班號共用航班由於多了另一航空公司的客人，因此上座率同樣得以提升。
* 提供更頻密的班次 - 就一些以商務旅客為主的航點，通過班號共用協議，航空公司能提供更頻密的班次，增加航班的選擇。例如香港 - 台北航線，國泰航空通過與子公司國泰港龍航空的班號共用協議，合共提供每天 20 班航班的服務。

## 影響

雖然班號共用的好處甚多，但有時候卻為旅客及航空公司帶來一些問題。

**旅客方面**

* 壟斷問題 - 部分航空公司透過共同經營某一航線而達致壟斷該航線，以致機票價格高居不下，影響消費者權益。

**航空公司方面**

* 賠償問題 - 有航空公司的航班經常遲到，以致旅客需要更改班號共用航班，加上有關中轉支援服務成本，所費不菲。
* 影響形象 - 共掛班號的航空公司只負責代售機票，而所有的營業責任都是由實際的承運航空公司負責，一旦承運航空公司出現問題，一些不明白班號共用制度的旅客便會向共掛班號的航空公司責難。例如 2011 年斐濟太平洋航空的班機因機件故障滯留香港三天，其香港的地勤服務由國泰航空代理；而國泰航空同時在該航班上共掛班號。部分從國泰購入機票的旅客便誤以為航班為國泰營運，並大為不滿。

## 參考文獻

## 參見

* 聯程機票
* 延遠航線
* 航權
* 乾租
* 濕租
代码冗余

在程序設計中，**冗餘代碼**又稱**代碼冗餘**，是指電腦程式中出現了不必要的原始碼或編譯代碼，例如一些永遠不會執行的代碼就是屬於冗餘代碼。出現冗餘代碼後可以考慮將冗餘代碼刪除。

## 例子

以下是 C 語言的一個例子

其中 `int iY = iX*2` 表達式就是多餘的代碼，可以將其刪除。

## 參考文獻
代码坏味道

程式開發領域，代碼中的任何可能導致深層次問題的症狀都可以叫做**代碼異味**（Code smell）。

通常，在對代碼做簡短的回饋迭代時，代碼異味會暴露出一些深層次的問題，這裡的回饋迭代，是指以一種小範圍的、可控的方式重構代碼。基於這些暴露的問題，人們會進一步的檢查設計和代碼中是否還存在別的**代碼異味**，然後再做進一步的重構。從負責重構的開發者的角度來看，代碼異味可以啟發何時重構，如何重構。因此，可以說代碼異味推動著重構的進行。

該術語似乎由肯特・貝克於 90 年代後期，在 WardsWiki 上首次使用。且自從在 _Refactoring. Improving the Design of Existing Code_. 被提到過，使用率就大大的提高。代碼異味同時也是敏捷開發者常用的術語。

什麼是，或者不是代碼異味，是一個主觀的判斷，通常因語言、開發者、開發方法的不同而不同。對於 Java 開發語言，有些工具，比如 Checkstyle、PMD 和 FindBugs 可以自動檢測一些代碼異味。

## 常見的代碼異味

* 代碼重複：相同或者相似的代碼存在於一個以上的地方。
* 長方法：一個非常長的方法、函式或者過程。
* 巨類：一個非常龐大的類。
* 太多的參數：函式或者過程的冗長的參數列使得代碼可讀性和品質非常差。
* 特性依戀：一個類過度的使用另一個類的方法。
* 親密關係：一個類依賴另一個類的實現細節。
* 拒絕繼承：子類以一種『拒絕』的態度，覆蓋基礎類別中的方法，換句話說，子類不想繼承父類別中的方法，參考里氏替換原則。
* 冗餘類 / 寄生蟲：一個功能太少的類。
* 人為的複雜：在簡單設計已經滿足需求的時候，強迫使用極度複雜的設計模式。
* 超長識別碼：尤其，在軟體工程中，應該毫無保留的使用命名規則來消除歧義。
* 超短識別碼：除非很明顯，一個變數名應該反映它的功用。
* 過度使用字面值：為提高可讀性和避免編碼錯誤，應該使用命名常數。此外，字面值可以且應該在可能的情況下，獨立存放於資原始檔或者指令碼中，在軟體部署到不同區域時，可以很方便地在地化。

## 參見

* 反模式
* 編程原則
* 靜態程式分析工具列表
* 軟體腐敗
* 設計異味
* 軟體缺陷指標

## 參照

## 外部連結

* CodeSmell at c2.com（頁面存檔備份，存於網際網路檔案館）
* Taxonomy of code smells
代码块

在電腦編程中，**塊**（block）或**代碼塊**是將原始碼組織在一起的詞法結構。塊構成自一個或多個聲明和語句。程式語言允許建立塊，包括嵌入其他塊之內的塊，就叫做**塊結構**程式語言。塊和子程式是結構化編程的基礎，結構化所強調的控制結構是用塊來形成的。

在編程中塊的功能是確使成組的語句被當作如同就是一個語句，限定在一個塊中聲明的物件如變數、過程和函式的詞法作用域，使得它們不衝突於在其他地方用到的同名者。在塊結構程式語言中，在塊外部的物件名字在塊內部是可見的，除非它們被聲明了相同名字的物件所遮掩。

## 歷史

塊結構的想法是在 1950 年代開發最初的 Autocode 期間發展出來的，並形式化於 ALGOL 58 和 ALGOL 60 報告中。Algol 58 介入了「複合」（compound）語句的概念，它只與控制流程有關。在「ALGOL 60 報告」中，介入了塊和塊作用域的概念，隨後在「修訂報告」中作出更明確定義：「一序列的聲明，跟隨著一序列的語句，並被包圍在 `begin` 和 `end` 之間，構成一個塊。所有聲明以這種方式出現在一個塊中，並只在這個塊中有效。」

## 語法

塊在不同語言中使用不同的語法。兩個廣大的家族是：

* ALGOL 語言家族，ALGOL 60 及其後繼者比如 Simula，使用關鍵字 `begin` 和 `end` 來界定複合語句和塊。ALGOL 68 成為了面向表達式程式語言，偏好使用與 `begin` 和 `end` 等價的圓括號 `(` 和 `)`。Pascal 語言家族，使用 `begin` 和 `end` 來界定複合語句。C 語言家族承襲了 BCPL，使用花括號 `{` 和 `}` 來界定複合語句或塊。
* Lisp 語言家族，使用具有語法關鍵字如 `prog` 或 `let` 的 S - 表達式來表示塊，S - 表達式是圓括號包圍的字首表示法。

此外，複合語句界定還可以採用：

* 越位規則，源於 ISWIM 使用縮排表示塊結構，採用越位規則的語言有 occam、ABC、Python 和 Nim 等。

建立控制結構，除了對所控制的語句序列，採用複合語句或匿名塊之外，還可以採用其他語法機制：

* 在 ALGOL 68 中，條件和迭代語句塊，使用塊首保留字的反寫保留字來終止，比如：`**if** ~ then ~ elif ~ then ~ else ~ **fi**`，`**case** ~ in ~ out ~ **esac**` 和 `for ~ while ~ **do** ~ **od**`。繼承此風格的有：1974 年 Edsger W. Dijkstra 的守衛命令語言和 Bourne shell 等。
* 一些結構化編程語言，如 FORTRAN 77、Modula-2、Ada 和 Visual Basic 等，對控制結構加結束關鍵字，比如：`IF ~ THEN ~ ELSIF ~ THEN ~ ELSE ~ END`。

## 限制

受 ALGOL 影響的一些語言，例如 C 語言及其衍生語言，支援在塊中巢狀入複合語句和帶有聲明的匿名塊，但不允許聲明巢狀函式。對於 Pascal 家族語言，塊就是程式、過程和函式的主體，在其語句部份的 `begin` 和 `end` 之中，不允許存在帶有聲明的匿名塊，只支援複合語句，用來在 `if`、`while`、`repeat` 等控制語句內組合語句序列。

## 基本語意

塊的語意是雙重的。首先，它向編程者提供了建立任意大和複雜的結構，並把它當作一個單元的一種途徑。其次，它確使編程者能限制變數的作用域，有時可以限制已經被聲明了的其他物件的作用域。

在早期語言比如 FORTRAN 和 BASIC 中，沒有語句塊或控制結構。直到 1978 年標準化 FORTRAN 77 之前，都沒有「塊狀 `IF`」語句，要實現按條件選擇，必須訴諸 `GOTO` 語句。例如下述 FORTRAN 代碼，從雇員工資中分別扣除超出正稅閾值部分的稅款，和超出附加稅閾值部分的附加稅款：

由於程式的邏輯結構不反映在語言中，分析出給定語句在何時執行可能會有困難。

塊允許編程者把一組語句當作一個單元。例如，在與上述 FORTRAN 代碼相對應的 Pascal 代碼中，上例中出現在初始化中的那些預設值，通過塊結構，被分別放置作出有關判斷的地方：

與上述 FORTRAN 代碼相比，處理附加稅代碼不再嵌入到處理正稅代碼之中，去除了附加稅閾值要大於正稅閾值，才能處理附加稅的隱含條件。使用塊結構，能明晰編程者的意圖，使代碼的結構更加密切反映出編程者的思考；再憑藉縮排增進可讀性，可使代碼更加容易理解和修改。

在早期語言中，變數有著寬廣的作用域。例如，一個叫做 `IEMPNO` 的整數變數，可以用在一個 Fortran 次常式的某部份中，指示一個雇員的社會安全號碼（ssn），但是在同一個次常式的維護工作中，一個編程者可能偶然的使用了相同的變數 `IEMPNO`，並用於了不同的用途，這可能導致一個難於跟蹤的缺陷。

塊結構使得編程者易於將作用域控制到細微級別。例如下述 Scheme 代碼，列出作為管理者的雇員名字和他的下屬數目，以及每個下屬的名字和角色：

在這個片段中，管理者及其下屬二者各自的 ssn，都用 `empno` 來標識，但是因為下屬 ssn 被聲明於內部的塊之中，它與持有管理者 ssn 的同名變數不相互影響。在實踐中，出於清晰性的考慮，編程者更可能選擇明顯不同的變數名字，但是即使選擇重名，也難以不經意的介入一個缺陷。

## 提升

在一些情境下，在一個塊中的代碼的求值，如同這個代碼實際上是寫在塊的頂部或塊的外部一樣。這經常通俗的叫做「提升」（hoisting），這包括了：

* 迴圈不變代碼外提，是將在迴圈內不變的代碼在迴圈之前求值的編譯器最佳化。
* 變數提升，是 JavaScript 的轄域規則，在這裡變數有函式轄域，並且表現得如同它們被聲明（而非定義）在函式的頂部一樣。

## 參見

* 基本塊
* 塊轄域
* 閉包 (電腦科學)
* 控制流程

## 參照
代码复用

**代碼複用**，也被稱作**軟體複用**。就是再利用已有的代碼，或者相關的知識去編寫新的代碼來構造軟體。

## 概要

可複用的代碼以及相關的知識與需求文件，設計，測試用例一樣都是軟體開發的組織內部所不可或缺的資產。事實上，最早為人所知的複用正是從代碼複用開始的。所謂的代碼複用，本質上就是對曾經編寫過的代碼的一部分甚至全部重新加以利用，從而構建新的程式。使用這種方法就可以將程式設計師從費時費力的重複勞動中解放出來。

程式庫是一種代碼複用的很好的形式。程式設計師可以建立內部抽象以便程式的部分代碼可被複用，或者直接建立一個自訂庫給自己使用。用于衡量代碼可複用程度的特性通常包括：模組化，低耦合，高內聚，資料封裝以及 SOC。

如果編寫代碼時要利用已有的代碼，則必須定義某種介面或者通信的方法。這通常包含了對子程式，物件，類或原型的參照或呼叫。

對於以某個已有程式的舊版本作為出發點來進行新版本的開發的做法也可被視為一種代碼複用。

還有一種做法也可被視為代碼複用。即直接從已有程式中將一段代碼拷貝出來並貼上到另一個地方作為新程式的一部分。但是這種做法往往會使得程式設計師最終陷入重複代碼過多的問題。

為了使代碼複用更加方便，更加迅速並且更加體系化，相關的研究者也進行了大量的研究。物件導向程式設計就是以此為目的而衍生出來的方法。更加新一點的方法就是代碼自動生成，它會基於使用者設定的一系列參數來自動生成程式的代碼。與此類似的概念被稱之為元程式設計。

## 軟體複用

**軟體複用**是一種電腦軟體工程方法和理論。60 年代的「軟體危機」使程式設計人員明白難於維護的軟體成本是極其高昂的，當軟體的規模不斷擴大時，這種軟體的綜合成本可以說是沒有人能負擔的，並且即使投入了高昂的資金也難以得到可靠的產品，而軟體重用的思想是解決這一問題的根本方法。

軟體複用的主要思想是，將軟體看成是由不同功能部分的「組件」所組成的有機體，每一個組件在設計編寫時可以被設計成完成同類工作的通用工具，這樣，如果完成各種工作的組件被建立起來以後，編寫一特定軟體的工作就變成了將各種不同組件組織連接體來的簡單問題，這對於軟體產品的最終品質和維護工作都有本質性的改變。

## 複用的類型

* 機會性的代碼複用

　
: 開發團隊在專案開始時便已知可複用的代碼或組件的存在，因而決定進行代碼複用。

* 有計劃的代碼複用

　
: 開發團隊從戰略角度為了日後的開發能夠複用代碼而進行設計。

## 複用的形式

### 程式庫

編寫程式庫是進行代碼複用最常見的方法。很多共通的操作，比如檔案的讀 / 寫，作業系統資訊的取得的動作都會被封裝在程式庫中，然後由軟體開發人員來呼叫。使用程式庫的一大優點就是它所提供的操作都是經過充分測試的，但是缺點則是無法對程式庫提供的操作的具體實現進行調整，同時程式庫也要求軟體開發人員花大量時間去學習它的用法。

### 設計模式

設計模式對於同類的相似問題提供了通用的解決方法。它所提供的是概念上的解決方法，對於具體問題往往還需要具體實現一份代碼。利用抽象類或介面往往可以在特定的設計模式中達到代碼的複用。

### 應用框架

軟體開發人員往往可以通過第三方的應用程式或者框架來實現對一個程式的大範圍複用，這可以有效地提高生產效率。但缺點在於第三方的應用程式或者框架往往只在某個特定的應用範圍內才可以適用。

## 參見

* 一次且僅一次
* 繼承
* 設計模式
* 程式設計方法學

## 外部連結

* Software Reuse NASA
* RiSE - Reuse in Software Engineering
* ReNews - SoftwareReuse and Domain Engineering
* Koders Open Source Search Engine
* merobase - a Search Engine for Software Components（頁面存檔備份，存於網際網路檔案館）
代码大师

**Codemasters 軟體有限公司**（代碼大師，英語：Codemasters Software Company Limited）或 **Codemasters**，早期稱為 **Code Masters**，是一間英國的遊戲開發和發行商。Codemasters 是現存最古老的英國遊戲工作室之一，它由大衛・達林和他的兄弟理察創立於 1986 年。在 2005 年，Codemasters 被《Develop》雜誌評為最佳的獨立遊戲開發商。

## 歷史

Codemasters 由大衛・達林和他的兄弟理察創立於 1986 年。2010 年 4 月 5 日，印度媒體公司信實娛樂宣布收購 Codemaster 50% 的股份；並在 2013 年增持到 60.41%，達成控股。2016 年 4 月，Codemasters 宣布接收稍早前被索尼電腦娛樂關閉的英國遊戲開發子公司 Evolution Studios 的開發成員。2018 年 6 月 1 日，Codemaster 在倫敦證券交易所的 AIM 板塊上市，信實娛樂的占股比例降低到 29.5%。2019 年 11 月，Codemaster 宣布以 3000 萬美元的價格收購英國遊戲開發工作室 Slightly Mad Studios。2020 年 11 月，Codemaster 和美國遊戲巨頭 Take-Two 達成初步協議，後者將以約 9.56 億美元收購 Codemaster，交易預計將於 2021 年初完成。同年 12 月，美商藝電突然宣布將以 12 億美元收購 Codemaster，高於此前 Take-Two 對 Codemaster 的收購估價，收購於 2021 年第一季度內完成。

## 遊戲

Codemasters 以真實競速類遊戲出名，像《越野菁英賽》（Colin McRae Rally）系列及其衍變成的《大地長征》（DiRT）系列，還有《極速房車賽 街頭賽車》（GRID）系列和自 2008 年起開始製作的一級方程式賽事的授權遊戲。此外，Codemasters 還負責波希米亞互動工作室製作的第一人稱射擊遊戲《閃擊點行動》系列的發行工作。

2009 年由 Asobo Studio 製作並由 Codemasters 發行的沙箱類競速遊戲《Fuel》被金氏世界紀錄評為遊戲地圖最大的遊戲。

## 參考資料

## 外部連結

* 官方網站
* 開放式目錄計劃中和 Codemasters 相關的內容
* World of Spectrum 中的 Codemasters （頁面存檔備份，存於網際網路檔案館）
代码审查

**代碼審查**是指對電腦原始碼系統化地審查，常用軟體同行評審的方式進行，其目的是在找出及修正在軟體開發初期未發現的錯誤，提升軟體品質及開發者的技術。代碼審查常以不同的形式進行，例如結對程式設計、非正式的看過整個程式碼，或是正式的軟體檢查。

## 簡介

藉由代碼審查可以找到及移除像是格式化字串攻擊、競爭危害、記憶體流失及緩衝區溢位等電腦安全隱患，因此提昇代碼的安全性。基於 Subversion（可能是 Trac 或是 Redmine）、Mercurial、Git 或其他軟體的線上軟體庫可以允許協同審查代碼，而且有些協同代碼審查工具可以簡化代碼審查的過程。

自動化代碼審查軟體可以系統化的檢查原始碼中是否有已知的電腦安全隱患，可以減少大量代碼審查的工作。

卡珀斯・瓊斯（Capers Jones）分析了超過 12,000 個軟體開發項目，其中使用正式代碼審查的項目，潛在缺陷發現率約在 60-65% 之間，若是非正式的代碼審查，潛在缺陷發現率不到 50%。大部份的測試，潛在缺陷發現率會在 30% 左右。。

一般的代碼審查速度約是一小時 150 行程式碼，對於一些關鍵的軟體（例如安全關鍵系統的嵌入式軟體），一小時審查數百行程式碼的審查速度太快，可能無法找到程式中的問題。代碼審查一般可以找到及移除約 65% 的錯誤，最高可以到 85%。

也有研究針對代碼審尋找到的缺陷類型進行分析。代碼審尋找到的缺陷中，有 75% 是和電腦安全隱患有關。對於產品生命週期很長的軟體公司而言，代碼審查是很有效的工具 。

## 分類

代碼審查一般會分為三類：正式的代碼審查、結對程式設計、以及輕量型的非正式代碼審查。

正式的代碼審查（例如范根檢查法）有審慎及仔細的流程，由多位參與者分階段進行。正式的代碼審查是傳統審查代碼的方式，由軟體開發者參加一連串的會議，一行一行的審查程式碼，一般會使用列印好的原始碼。正式的代碼審查可以徹底的找到程式中的缺陷，但需要投入許多的資源。

結對程式設計是兩個程式設計師在一個電腦上共同工作，一個輸入程式，另一個工程師審查他或她所輸入的程式，結對程式設計是在極限編程中常見的開發方式。

輕量型的非正式代碼審查需要投入的資源比正式的代碼審查要少，一般會是在正常軟體開發流程中同時進行，有時也會將結對程式設計視為輕量型代碼審查的一種。

* Email 往返：在代碼登入後，原始碼管理系統自動將代碼郵寄給審查者。
* 配合輔助工具的代碼審查：作者及審查者利用配合代碼審查的軟體進行審查。

書籍 _Best Kept Secrets of Peer Code Review_ 中曾提到有關代碼審查的案例研究，這個研究發現輕量型代碼審查所找到的缺陷會比正式的代碼審查要少，但其速度較快，其成本也較低。

## 評論

以往正式的代碼審查在審查的準備及進行時都需要投入許多的資源。

代碼分析工具的使用可以協助代碼審查。尤其是一些整合在整合開發環境（IDE）下的工具，可以直接提供程式開發者有關編程標準相容的回饋。

## 相關條目

* 軟體審查
* 軟體檢查
* 偵錯
* 軟體測試
* 靜態程式分析
* 效能分析
* 自動代碼審查
* 代碼審查工具列表

## 參考資料
代码审查工具列表

以下是一個代碼審查用工具軟體的列表

## 參考資料
代码审计

**代碼稽核**（Code audit）是一種以發現程式錯誤，安全漏洞和違反程式規範為目標的原始碼分析。它是防禦性編程範式的一部分。該範式的目標是在程式發布前減少錯誤。C 和 C++ 原始碼是最常見的分析物件，因為其他更高層的語言如 Python 擁有更少可能存在漏洞的函式（比如不檢查邊界條件）。

## 參考文獻
代码库

在軟體開發中，**代碼庫**（英語：code base 或 codebase）是用於構建特定軟體系統、應用程式或軟體組件一組的原始碼。

通常，代碼庫僅包含人工編寫的原始碼文件；代碼庫通常不包含由工具生成的原始碼文件或二進位文件（目標文件），因為它們可以從人工編寫的原始碼構建生成，沒有必要加入代碼庫。但是，代碼庫通常包括配置文件和屬性文件，因為這些文件是構建時所必不可少的數據。

代碼庫通常存儲在版本控制系統中的倉庫（repository）中。對於較小的項目，可以將其保存為一組簡單的文件（甚至連 Linux 內核都通過這種形式維護了很多年）。倉庫是一個公共或私有的保存大量原始碼的地方。大多數倉庫會用作備份、版本控制，在多人開發的項目中會幫助處理各種代碼版本問題，如：開發者同時修改源碼導致的衝突。現今，流行使用 Subversion，Git 和 Mercurial 等工具構建倉庫（repository）並處理上述的事情，在開源項目十分流行。

## 參見

* Git
* Github
* Gitee
* 分散式版本控制
* 倉庫 (版本控制)

## 參考
代码段

在採用段式記憶體管理的架構中，**代碼段**（code segment /text segment）通常是指用來存放程式執行代碼的一塊記憶體區域。這部分割區域的大小在程式執行前就已經確定，並且記憶體區域通常屬於唯讀，某些架構也允許代碼段為可寫，即允許程式自修改（self-modifying code）。
在**代碼段**中，也有可能包含一些唯讀的常數變數，例如字串常數等。

作業系統在裝載一個程式時會進行行程位址空間的分段，而代碼段通常處於最底部，即最低位址部分，而堆和棧在高處，所以在允許代碼段可寫的架構上，當堆或棧記憶體溢位時，代碼段中的資料就會開始被覆蓋。

## 參見

* BSS 段
* 資料段
* 記憶體管理
* 動態記憶體分配
* 段式管理
代码混淆

**代碼混淆**（Obfuscation）是將電腦程式的原始碼或機器碼，轉換成功能上等價，但是難於閱讀和理解的形式的行為。

代碼混淆可以用於程式原始碼，也可以用於程式編譯而成的中間代碼。執行代碼混淆的程式被稱作**代碼混淆器**。目前已經存在許多種功能各異的代碼混淆器。

其主要工作有：

* 將代碼中的各種元素，如變數、函式、類的名字覆寫成無意義的名字。比如覆寫成單個字母，或是簡短的無意義字母組合，甚至覆寫成「\_\_」這樣的符號，使得閱讀的人無法根據名字猜測其用途。
* 重寫代碼中的部分邏輯，將其變成功能上等價、但是更難理解的形式。比如將 for 迴圈覆寫成 while 迴圈、將迴圈覆寫成遞迴、精簡中間變數，等等。
* 打亂代碼的格式。比如刪除空格、將多行代碼擠到一行中、或者將一行代碼斷成多行等等。
* 添加花指令，通過特殊構造的指令來使得反組譯器出錯，進而干擾反編譯工作的進行。

代碼混淆器也會帶來一些問題。主要的問題包括：

* 被混淆的代碼難於理解，因此除錯也變得困難起來。開發人員通常需要保留原始的未混淆的代碼用於除錯。
* 對於支援反射的語言，代碼混淆有可能與反射發生衝突。
* 代碼混淆並不能真正阻止反向工程，只能增大其難度。因此，對於對安全性要求很高的場合，僅僅使用代碼混淆並不能保證原始碼的安全。

## 白盒密碼

白盒密碼（ White-box cryptography）是指夠抵抗白盒攻擊的密碼演算法，以及對應實現。常見的實現方式是藉助高強度的代碼及演算法混淆。

## 參考文獻

## 外部連結

* Javascript 代碼混淆器 on GitHub （頁面存檔備份，存於網際網路檔案館）
* JavaScript Obfuscator Tool
代码生成

在計算中，**代碼生成**是指編譯器的**代碼生成器**將原始碼的中間語言轉換為機器可以輕鬆執行的形式（例如機器語言）的過程。通常一個解析樹或一個抽象語法樹要輸入進代碼生成器。

## 參考文獻
代码编辑器

**原始碼編輯器**是程式設計師用於編寫電腦程式的文字編輯器。它通常是一個獨立的應用程式，或是作為整合式開發環境的一部分存在，或者是一個執行於瀏覽器中的網頁編輯器。由於程式設計師的主要任務就是編寫代碼，因此原始碼編輯器也就成為了最為重要的編程工具。

## 特性

**原始碼編輯器**通常能夠簡捷快速地輸入代碼，而且包含了很多功能，如語法突顯、自動縮排、自動完成、自動補全等功能。
這些編輯器通常還提供一些便捷的方式來呼叫編譯器、直譯器、除錯器，或者其他與軟體開發流程相關的程式。
儘管有很多的文字編輯器可以用來編寫代碼，但是如果它們的功能不夠強大，不能進行一些自動化的操作，不能減輕編碼的負擔，
它們依然不能被稱為原始碼編輯器，最多也就是能夠編輯原始碼的文字編輯器罷了。
結構編輯器是另一種形式的原始碼編輯器，它不是直接編輯原生的代碼，而是操作代碼的整體結構，通常是抽象語法樹。

## 一些著名的原始碼編輯器

* Atom
* Eclipse
* Emacs（跨平台，包括 Unix、Linux、Mac OS X、Windows）
* Geany（跨平台，包括 Unix、Linux、Mac OS X、Windows）
* Gedit（跨平台，包括 Linux、Mac OS X、Windows）
* IntelliJ IDEA 的內建編輯器（Windows, Linux, Mac OS X）
* Microsoft Visual Studio 的內建編輯器（Windows）
* NetBeans
* Notepad++（Windows）
* Sublime Text（跨平台，包括 Linux、Mac OS X、Windows）
* TextMate（Mac OS X）
* vi/Vim（跨平台，包括 Unix、Linux、Mac OS X、Windows）
* Visual Studio Code（跨平台，包括 Linux、Mac OS X、Windows）

## 爭論

關於「誰是最好的編輯器？」這一爭論從來就沒有停止過，甚至有人還將其稱為是一場「聖戰」。
著名的例子包括 vi 和 Emacs 之間的比較，Eclipse 與 NetBeans 的比較。
每當某一種編輯器被廣泛討論的時候，這些爭論也就隨之而起，由此也形成了一種非常重要的網際網路文化。

## 參見

* 整合式開發環境
* 整合開發環境列表
* 檔案編輯器比較 § 編程功能
代码美化

**Prettyprint** 又叫**漂亮列印**、**代碼美化器**，是指將各種風格的排版應用於文本文件，如原始碼、置標語言以及類似內容。這些排版可能需要遵守縮進風格，並使用不同的顏色和字體來語法突顯原始碼的語法元素，或調整源代碼的大小，以便於源代碼內容更容易閱讀和理解。

## 外部連結

* Algorithm 268: ALGOL 60 reference language editor _William M. McKeeman_: Commun. ACM 8(11): 667-668 (1965)
* lgrind （頁面存檔備份，存於網際網路檔案館）, Comprehensive TEX Archive Network
* NEATER2: a PL/I source statement reformatter _Kenneth Conrow, Ronald G. Smith_: Commun. ACM 13(11): 669-675 (1970)
* SOAP - Simplify Obscure Algol Programs （頁面存檔備份，存於網際網路檔案館） _R. S. Scowen, D. Allin, A. L. Hillman, M. Shimell_: National Physical Laboratory Central Computer Unit report CCU6 （頁面存檔備份，存於網際網路檔案館） (April, 1969) Includes formatted listing of SOAP source code.
  * SOAP - A Program which Documents and Edits ALGOL 60 Programs. _R. S. Scowen, D. Allin, A. L. Hillman, M. Shimell_: Comput. J. 14(2): 133-135 (1971)
  * Original SOAP Source Code from the KDF9 (unformatted) （頁面存檔備份，存於網際網路檔案館）
* SOAP User's Guide. （頁面存檔備份，存於網際網路檔案館） (for Edinburgh IMP) _Peter Salkeld Robertson_ (1976)
  * SOAP Source Code （頁面存檔備份，存於網際網路檔案館） in/for IMP9
* Soap80: A Program for Formatting IMP80 Source Programs. （頁面存檔備份，存於網際網路檔案館） _J.M. Murison, Edinburgh Regional Computer Center_ (1980)
  * SOAP Source Code （頁面存檔備份，存於網際網路檔案館） in/for IMP80 _E. N. Gregory, University of Kent at Canterbury; Peter D. Stephens, Edinburgh Regional Computer Center_
* PRETTYP.PAS （頁面存檔備份，存於網際網路檔案館） Early pascal prettyprinter. _Ledgard et al._
* Pascal With Style （頁面存檔備份，存於網際網路檔案館） (1979)
* style (9) （頁面存檔備份，存於網際網路檔案館） FreeBSD style guidelines
* vgrind （頁面存檔備份，存於網際網路檔案館）, The [Unix] Heirloom Project
* Formatting your source code （頁面存檔備份，存於網際網路檔案館） GNU style guidelines
代码膨胀

**代碼膨脹**（英語：**Code bloat**）是指程式碼（可以是原始碼，也可以是機器碼）生成的程式檔案過大、執行緩慢或者有其他浪費資源的情況。代碼膨脹可能由編寫代碼的語言、編譯時所用的編譯器，或者編寫的程式設計師導致。代碼膨脹通常指原始碼過於冗長，由程式設計師的編碼習慣和程式語言的設計導致，代碼膨脹也可以指編譯後的代碼或者二進位檔案占用空間過大（膨脹）。

## 常見原因

通常來說，膨脹的代碼是由於程式設計師使用了較多的代碼行，而非使用了解決問題的最佳方案。

程式設計師寫出膨脹代碼的部分原因有：

* 過度設計：
  * 過度使用物件導向（OOP）結構，如類和繼承。這可能導致麻煩且混亂的設計，使代碼量多於必要。
  * 不正確的使用設計模式 —— 物件導向的開發人員可能在不需要使用設計模式的地方強行使用，從而導致問題。
* 沒有用適當的封裝方案使代碼可重複利用，導致代碼重複
* 宣告式編程 —— 在命令式或物件導向語言中實現宣告式編程風格通常會導致代碼膨脹。
* 過度的迴圈展開 —— 不理智的過度最佳化效能。
* 過度使用多重 `If` 條件語句 —— 而沒有使用如尋找表。

一些原生編譯器推導膨脹的例子包括：

* 死代碼 —— 代碼被編譯，但從未被使用。
* 冗餘計算 —— 重新計算已經計算過的表達式。這種冗餘計算經常在實現防止緩衝區溢位的「邊界檢查」代碼時產生。 尖端的編譯器只將其計算一次，使用常用子表達式消除和迴圈不變代碼外提技術消除冗餘計算。
* C++ 中採用的模板系統的一些原生實現是編譯該語言的編譯器之不足之處的例子。實現此特性的原生編譯器可以為使用的每個資料類型引入一個模板類版本的方法。但是，這也導致被編譯的方法可能永遠不會被用到，導致代碼膨脹。更尖端的編譯器和連結器能檢測多餘的副本並將其丟棄，或者避免產生，從而減少膨脹。因而，使用能放棄死代碼的編譯器可以使模板代碼產生更小的二進位檔案。

## 例子

下列 JavaScript 程式碼演算法有著大量的冗餘變數、不必要的邏輯，以及低效的字串連接。

而相同的邏輯可以用下列方式更有效地表達：

## 不同語言的代碼密度

各種電腦語言的代碼密度有著很大差別，以「緊湊」語言（例如領域特定語言、微軟 P 代碼 、執行緒代碼）編寫的程式以及緊湊語言（以機器碼編寫）的直譯器通常比直接用機器語言編寫程式消耗更少的代碼量。

## 減少膨脹

減少代碼膨脹的一些技術包括：

* 重構經常使用的代碼序列為子程式，並從多個位置呼叫該子程式，而不是在各個位置上複製並貼上這段代碼。
* 重新使用已經被編寫的子程式（可能利用附加參數），而不是從頭編寫它們的新代碼。

## 參見

* 軟體膨脹
* 極簡主義

## 參考資料
代码评审

**代碼審查**是指對電腦原始碼系統化地審查，常用軟體同行評審的方式進行，其目的是在找出及修正在軟體開發初期未發現的錯誤，提升軟體品質及開發者的技術。代碼審查常以不同的形式進行，例如結對程式設計、非正式的看過整個程式碼，或是正式的軟體檢查。

## 簡介

藉由代碼審查可以找到及移除像是格式化字串攻擊、競爭危害、記憶體流失及緩衝區溢位等電腦安全隱患，因此提昇代碼的安全性。基於 Subversion（可能是 Trac 或是 Redmine）、Mercurial、Git 或其他軟體的線上軟體庫可以允許協同審查代碼，而且有些協同代碼審查工具可以簡化代碼審查的過程。

自動化代碼審查軟體可以系統化的檢查原始碼中是否有已知的電腦安全隱患，可以減少大量代碼審查的工作。

卡珀斯・瓊斯（Capers Jones）分析了超過 12,000 個軟體開發項目，其中使用正式代碼審查的項目，潛在缺陷發現率約在 60-65% 之間，若是非正式的代碼審查，潛在缺陷發現率不到 50%。大部份的測試，潛在缺陷發現率會在 30% 左右。。

一般的代碼審查速度約是一小時 150 行程式碼，對於一些關鍵的軟體（例如安全關鍵系統的嵌入式軟體），一小時審查數百行程式碼的審查速度太快，可能無法找到程式中的問題。代碼審查一般可以找到及移除約 65% 的錯誤，最高可以到 85%。

也有研究針對代碼審尋找到的缺陷類型進行分析。代碼審尋找到的缺陷中，有 75% 是和電腦安全隱患有關。對於產品生命週期很長的軟體公司而言，代碼審查是很有效的工具 。

## 分類

代碼審查一般會分為三類：正式的代碼審查、結對程式設計、以及輕量型的非正式代碼審查。

正式的代碼審查（例如范根檢查法）有審慎及仔細的流程，由多位參與者分階段進行。正式的代碼審查是傳統審查代碼的方式，由軟體開發者參加一連串的會議，一行一行的審查程式碼，一般會使用列印好的原始碼。正式的代碼審查可以徹底的找到程式中的缺陷，但需要投入許多的資源。

結對程式設計是兩個程式設計師在一個電腦上共同工作，一個輸入程式，另一個工程師審查他或她所輸入的程式，結對程式設計是在極限編程中常見的開發方式。

輕量型的非正式代碼審查需要投入的資源比正式的代碼審查要少，一般會是在正常軟體開發流程中同時進行，有時也會將結對程式設計視為輕量型代碼審查的一種。

* Email 往返：在代碼登入後，原始碼管理系統自動將代碼郵寄給審查者。
* 配合輔助工具的代碼審查：作者及審查者利用配合代碼審查的軟體進行審查。

書籍 _Best Kept Secrets of Peer Code Review_ 中曾提到有關代碼審查的案例研究，這個研究發現輕量型代碼審查所找到的缺陷會比正式的代碼審查要少，但其速度較快，其成本也較低。

## 評論

以往正式的代碼審查在審查的準備及進行時都需要投入許多的資源。

代碼分析工具的使用可以協助代碼審查。尤其是一些整合在整合開發環境（IDE）下的工具，可以直接提供程式開發者有關編程標準相容的回饋。

## 相關條目

* 軟體審查
* 軟體檢查
* 偵錯
* 軟體測試
* 靜態程式分析
* 效能分析
* 自動代碼審查
* 代碼審查工具列表

## 參考資料
代码重复

**代碼重複**（英文：**duplicate code**，也叫**代碼複製**）在程式設計中表示一段原始碼在一個程式，或者一個團體所維護的不同程式中重複出現，是不希望出現的現象。為避免巧合，只有一定數量的代碼完全相同才能判定為代碼重複。重複代碼的段落有時被稱為代碼複製，自動檢測代碼重複的過程叫做**複製檢測**。

## 產生

產生代碼重複可能有以下幾個原因：

* 因為某段代碼能用就複製貼上過來。多數情況下代碼會有少許不同，如變數名稱改變或代碼增刪。
* 因為要實現與已有功能類似的功能，開發者獨立寫出與別處相似的代碼。研究表明獨立撰寫的代碼在語法上不一定相似。
* 抄襲，即不經允許複製代碼，且未列出著作權歸屬。
* 代碼系自動生成。這時可能需要重複代碼以提高效能或方便開發。註：這裡代碼重複是指碼產生器自動生成的代碼，而非生成器本身的代碼。

## 成本與效益

不恰當的代碼重複表明程式設計不良，例如缺少抽象。這會導致程式過長，錯誤更多，進而難以維護，因為需要人工尋找並修改重複的部分。然而由於種種原因，適當的代碼重複難以避免，例如給與已有裝置相似的新裝置寫驅動程式時，複製代碼能使開發更便捷。

當複製具有軟體漏洞的代碼時，如果開發人員不知道這樣的副本，則複製的代碼中可能會繼續存在漏洞。代碼重構可以改善許多軟體的度量衡標準，例如原始碼行數，循環複雜度和耦合度。這可能會縮短編譯時間，降低認知負載，減少人為錯誤，減少被遺忘或被忽視的代碼。

但並不是所有的代碼重複都可以被重構。如果程式語言提供不充分或過於複雜的抽象，複製或許是具有速度效益上的解決方式，特別是修改代碼使用的編輯器如有支援區塊 (行) 編輯的功能。而且，重構時破壞代碼的風險可能會超過維護的效益。重複的代碼似乎不會比不重複的代碼更容易出錯。使用開源方式共享代碼組件，而不是在軟體組態管理的倉儲庫之間複製它們，也可以減少複製。

## 檢測

檢測代碼重複的手段有：

* Baker 演算法
* Rabin–Karp 字串搜尋演算法
* 利用抽象語法樹
* 視覺化檢測器
* 矩陣計數檢測

## 例子

以計算整數陣列的平均值的代碼片段為例

這兩個迴圈可以覆寫為一個函式：

利用以上函式可以寫出無重複的原始碼

## 參見

* 代碼異味
* 一次且僅一次
* 抽象化 (電腦科學)

## 參考資料
代码页932

**Shift\_JIS** 是日本電腦系統常用的編碼表，能容納全形及半形拉丁字母、平假名、片假名、符號及日語漢字。

命名為 Shift\_JIS 的原因，是在放置全形字元時，要避開原本在 0xA1 至 0xDF 放置的半形假名字元。

微軟及 IBM 的日語電腦系統即使用了這編碼表，稱為 **CP932**。

## 位元組結構

以下字元在 Shift\_JIS 用一位元組表示。

　
: ASCII 字元（0x20 至 0x7E），但「\」由「¥」取代

　
: ASCII 控制字元（0x00 至 0x1F、0x7F）

　
: JIS X 0201 標準內的半形標點及片假名（0xA1 至 0xDF）

　
: 在部分作業系統中，0xA0 用來放置「不換行空格」。

以下字元在 Shift\_JIS 用兩位元組來表示

　
: JIS X 0208 字集的所有字元

　
: 「第一位位元組」使用 0x81 至 0x9F、0xE0 至 0xEF（共 47 個）

　
: 「第二位位元組」使用 0x40 至 0x7E、0x80 至 0xFC（共 188 個）

　
: 使用者定義區

　
: 「第一位位元組」使用 0xF0 至 0xFC（共 13 個）

　
: 「第二位位元組」使用 0x40 至 0x7E、0x80 至 0xFC（共 188 個）

Shift\_JIS 編碼表並未使用 0xFD、0xFE 及 0xFF。

微軟及 IBM 的日語電腦系統中，0xFA、0xFB 及 0xFC 的兩位元組區域加入了 388 個 JIS X 0208 沒有收錄的符號和漢字。

## Shift\_JIS 編碼表

## JIS 轉換方法

　
: $s_{1}={\begin{cases}\left\lfloor {\frac {j_{1}+1}{2}}\right\rfloor +112&{\mbox{when }}33\leq j_{1}\leq 94\\\left\lfloor {\frac {j_{1}+1}{2}}\right\rfloor +176&{\mbox{when }}95\leq j_{1}\leq 126\end{cases}}$

　
: $s_{2}={\begin{cases}j_{2}+31+\left\lfloor {\frac {j_{2}}{96}}\right\rfloor &{\mbox{when }}j_{1}{\mbox{ is odd}}\\j_{2}+126&{\mbox{when }}j_{1}{\mbox{ is even}}\end{cases}}$

## 參看

* ASCII
* JIS X 0201
* JIS X 0208
* ISO/IEC 2022
* EUC
* Unicode
* 日本產業規格

## 外部連結

* 微軟 CP932 編碼表（頁面存檔備份，存於網際網路檔案館）
* Ping: Japanese text encoding
* Shift\_JIS 中，非 ASCII 部分的編碼表
* Forms of Shift-JIS in ICU (International Components for Unicode)
  * ibm-942 (sjis78)（頁面存檔備份，存於網際網路檔案館）
  * ibm-943 (Contains the \u00A5 ↔ \x5C mapping)（頁面存檔備份，存於網際網路檔案館）
  * Shift JIS (Contains the \u005C ↔ \x5C mapping)（頁面存檔備份，存於網際網路檔案館）
* Shift\_JIS 的發展（頁面存檔備份，存於網際網路檔案館）
代码页936

**代碼頁 936**（**Codepage 936**）是 Microsoft 的簡體中文字元集標準，是東亞語文的四種雙位元組字元集（DBCS）之一。其最初版本和 GB 2312 一模一樣，但在推出 Windows 95 時擴展成 GBK。

現時中國大陸強制要求所有軟體皆要支援 GB 18030（Microsoft 稱之為代碼頁 54936）。

## 外部連結

* Microsoft's Reference for Codepage 936
* Mapping of Codepage 936 to Unicode（頁面存檔備份，存於網際網路檔案館）
代码页950

**代碼頁 950**（**Code page 950**）是微軟的繁體中文字元集標準，由大五碼修改而成，是大五碼的最通行版本，也是大五碼的_事實標準_。此代碼頁並無在 IANA 登記，故不能算是正式網際網路標準，通常只會以「big5」代表。代碼頁 950 和 Big5 最主要的差別是，頁碼 950 在 0xF9D6-0xF9FE 中添加了 7 個倚天中文系統增加的字元（碁、銹、裏、墻、恒、粧、嫺，即倚天擴充字集，俗稱「倚天字」）和 34 個畫圖和製表符號：

由 Windows Me 的版本開始，在 0xA3E1 加入歐元符號（€），之後所有 Windows 版本的頁碼 950 也都有這個符號。

## 參考

## 外部連結

* Microsoft's Reference for Codepage 950Archive.is 的存檔，存檔日期 2013-01-28
* Mapping of Codepage 950 to Unicode （頁面存檔備份，存於網際網路檔案館）
代码风格

**代碼風格**（英語：Programming style）即程式開發人員所編寫原始碼的書寫風格。良好的代碼風格會幫助程式設計師閱讀和理解符合該風格的原始碼，並且避免錯誤。

關於該主題的經典著作是 1970 年代編寫的《編程風格的要素》，並以當時流行的 Fortran 和 PL/I 語言的範例進行了說明。

特定程式中使用的編程風格可能源自公司或其他計算組織的代碼約定，以及代碼作者的偏好。編程風格通常是為特定的程式語言（或語言家族）設計的：在 C 原始碼中被認為是良好的風格可能不適合 BASIC 原始碼等等。但是，一些規則通常適用於許多語言。

## 良好風格的要素

總結程式設計實踐中的經驗，代碼風格的要素包括（但不限於）以下幾點：

* 名字的使用（參見：駝峰式大小寫、識別碼命名約定、匈牙利命名法）
* 表達式與語句
* 常數的使用
* 注釋的使用
* 縮排（參見：縮排風格）
* 代碼的布局

## 代碼外觀

代碼風格通常處理原始碼的可視外觀，帶有可讀性的目標。軟體很長時間都可以格式化原始碼，讓寫代碼的人將注意力集中在命名，邏輯和更進階的技術。作為一個實際的點，用電腦來格式化原始碼節省了時間，且使不帶網路論戰地實施全公司的標準成為可能。

### 縮排

縮排風格協助確認控制流和代碼塊。在一些程式語言中，縮排被用來限定代碼的邏輯塊；在這些情況下正確的縮排不僅僅是風格的事。在其他語言中，縮排和空白字元不影響功能，雖然有邏輯和一貫的縮排是代碼更易於閱讀。比較：

或

和像是這樣

前兩個範例很可能更容易閱讀，因為它們以既定的方式縮排（"hanging paragraph" 樣式）。這種縮排風格在處理多個巢狀結構時特別有用。

#### ModuLiq

ModuLiq Zero 縮排風格用 Enter 分組而不是縮排。和所有以上的比較：

#### Lua

Lua 不用傳統的花括號和括號。if/else 語句只需要表達式後面有 `then`，以 `end` 結束 if/else 語句。

縮排是可選的。`and`,`or`,`not` 在 true/false 語句間被使用。

它們是真 / 假陳述，如

會代表假。

#### Python

Python 用縮排來表明控制結構，所以_正確的縮排_是需要的。通過這麼做，用花括號（亦即 `{` 和 `}`）包括的需要就被清除。另一方面，複製和貼上 Python 代碼可能導致問題，因為被貼上的代碼的縮排級別可能和當前行的縮排級別不同。這樣的重格式化用手做可能十分乏味，但一些文字編輯器和整合式開發環境有自動做的功能。也有當 Python 代碼被發表在去除空白字元的論壇或網頁上，使它變得無法使用的問題，雖然這個問題可以在能用保留空白字元的標籤，像 "<pre> ... </pre>"（HTML 中），"[code]"..."[/code]"（bbcode 中）等等時避免。

注意 Python 不適用花括號，而是一個普通的英文冒號（例子 `else:`）。

許多 Python 程式設計師傾向於遵循一種公認的風格指南，稱為 PEP8。有一些工具旨在自動化 PEP8 合規性。

#### Haskell

Haskell 類似地有越位規則，也就是它有一種二維語法，在其中縮排對定義塊有意義（雖然另一種語法用花括號和分號）。Haskell 是一種聲明式語言，在 Haskell 指令碼中有語句，但是有聲明。範例:

可以被寫成一行，如：

Haskell 鼓勵 文學編程 的使用，擴充的文字解釋代碼的緣由。在文學式 Haskell 指令碼（帶有副檔名 `lhs`）中，所有東西都是注釋，除了標記為代碼的塊。程式可以用 LaTeX 編寫，這種情況下 `code` 環境標記哪裡是代碼。並且每個活動的代碼段落可以被在前面和後面帶上空行的方式標記，以一個大於號和一個空格開始每一行代碼。這裡有一個使用 LaTeX 標記的：

一個使用純文字的例子：

#### 垂直對齊

將相似的元素垂直對齊經常是有幫助的，使錯字導致的錯誤更加明顯。比較：

和

#### 空格

在一些需要空白字元的情況下，絕大部分自由形式語言的語法不關心出現了多少空白字元。與空白字元相關的風格被普遍用來加強可讀性。目前沒有已知的確鑿事實（研究得出的結論）關於哪種空白字元風格有最好的可讀性。

例如，比較下列語法上等價的 C 語言代碼例子：

v.s.

#### 制表符

使用製表鍵來建立空白字元，在不施加足夠關注時會造成特定的問題，因為依據使用的工具，甚至是使用者的偏好，制表點的位置可能不同。
如一個例子，一個程式設計師偏好 4 個制表位，將工具集設定成如此，然後用這些去格式化代碼。

另一個程式設計師偏好 8 個制表位，並將工具集設定成如此。當其他人檢查原來那個人的代碼時，他們可能會發現很難讀。

一種對這個問題廣泛使用的解決方法可能包含不為對齊使用製表鍵，或制定必須設定成幾個制表位的規則。注意制表符在一貫的情況下工作良好，限制在局部縮排上，並且不用來對齊：

## 參見

* C and C++ Style Guides（頁面存檔備份，存於網際網路檔案館）
* Programming in C++, Rules and Recommendations（頁面存檔備份，存於網際網路檔案館）
* Aladdin's C coding guidelines（頁面存檔備份，存於網際網路檔案館）
* USER NOTES ON FORTRAN PROGRAMMING (UNFP)（頁面存檔備份，存於網際網路檔案館）
* PROGRAM LAYOUT - THE ART OF MAKING PROGRAMS READABLE（頁面存檔備份，存於網際網路檔案館）
代碼共享

**代碼共享**（英語：**Code-sharing**），台灣稱為**班號共用**，又稱「**共掛航班**」、「**聯營航班**」，是現代航空業其中一種相當普遍的經營模式，由多家航空公司共同經營某一航線，常見於以接駁長途航班的短途航班上，也偶見於以商務旅客為主、班次頻密的短途航班。簡單來說，就是航空公司之間的「買位」制度，讓未有飛行該航線的航空公司，能通過購入其他航空公司航班的機票再出售予顧客。班號共用的協議是建基於過往聯程機票的制度上，並進一步發展成全球性的航空公司聯盟。目前國際上三大航空公司聯盟 —— 星空聯盟、天合聯盟及寰宇一家，最初都是由原本就有班號共用合作的航空公司組成聯盟的核心集團，再逐漸吸收新夥伴而擴大成今日的規模。

## 說明

例如國泰航空由香港飛往新加坡的 CX691 航班與美國航空 AA8890 航班採用班號共用，這航班是由國泰航空的飛機與空勤人員營運，美國航空不會參與運營，但會替這航班賣票，旅客可以從美國到香港轉乘 AA8890 航班（亦即國泰 CX691）前往新加坡。

## 好處

班號共用可讓各航空公司間達成同業合作，是旅客及雙方航空公司都有利的經營方式，具有「魚幫水，水幫魚」的多贏意味。

**旅客方面**

* 提供更清晰的票務資料 - 所有資料均以同一航空公司的格式發出，而班號共用航班的飛行時間通常能夠非常順暢地接駁長途航班，能夠縮短中轉時間。
* 提供更優質的中轉支援服務 - 一旦長途航班延誤以致旅客無法趕上班號共用航班，航空公司會提供有關的支援，如安排入住酒店、賠償餐券及機票重新劃位等，而行李同樣會獲得適當的處理。

**航空公司方面**

* 擴大航線網絡 - 就一些低客量的長途航點，航空公司無需自行營運便能提供服務。例如香港 - 聖地牙哥航線，國泰航空便能通過與智利國家航空的班號共用航班提供來往洛杉磯 - 聖地牙哥的服務，再通過自行營運的香港 - 洛杉磯航班，出售香港經洛杉磯至聖地牙哥的機票。
* 提升航班上座率 - 由於前往低客量長途航點的乘客都會乘搭同一長途航班再轉乘班號共用航班，因此長途航班的上座率會得以提升；而班號共用航班由於多了另一航空公司的客人，因此上座率同樣得以提升。
* 提供更頻密的班次 - 就一些以商務旅客為主的航點，通過班號共用協議，航空公司能提供更頻密的班次，增加航班的選擇。例如香港 - 台北航線，國泰航空通過與子公司國泰港龍航空的班號共用協議，合共提供每天 20 班航班的服務。

## 影響

雖然班號共用的好處甚多，但有時候卻為旅客及航空公司帶來一些問題。

**旅客方面**

* 壟斷問題 - 部分航空公司透過共同經營某一航線而達致壟斷該航線，以致機票價格高居不下，影響消費者權益。

**航空公司方面**

* 賠償問題 - 有航空公司的航班經常遲到，以致旅客需要更改班號共用航班，加上有關中轉支援服務成本，所費不菲。
* 影響形象 - 共掛班號的航空公司只負責代售機票，而所有的營業責任都是由實際的承運航空公司負責，一旦承運航空公司出現問題，一些不明白班號共用制度的旅客便會向共掛班號的航空公司責難。例如 2011 年斐濟太平洋航空的班機因機件故障滯留香港三天，其香港的地勤服務由國泰航空代理；而國泰航空同時在該航班上共掛班號。部分從國泰購入機票的旅客便誤以為航班為國泰營運，並大為不滿。

## 參考文獻

## 參見

* 聯程機票
* 延遠航線
* 航權
* 乾租
* 濕租
代碼冗餘

在程序設計中，**冗餘代碼**又稱**代碼冗餘**，是指電腦程式中出現了不必要的原始碼或編譯代碼，例如一些永遠不會執行的代碼就是屬於冗餘代碼。出現冗餘代碼後可以考慮將冗餘代碼刪除。

## 例子

以下是 C 語言的一個例子

其中 `int iY = iX*2` 表達式就是多餘的代碼，可以將其刪除。

## 參考文獻
代碼壞味

程式開發領域，代碼中的任何可能導致深層次問題的症狀都可以叫做**代碼異味**（Code smell）。

通常，在對代碼做簡短的回饋迭代時，代碼異味會暴露出一些深層次的問題，這裡的回饋迭代，是指以一種小範圍的、可控的方式重構代碼。基於這些暴露的問題，人們會進一步的檢查設計和代碼中是否還存在別的**代碼異味**，然後再做進一步的重構。從負責重構的開發者的角度來看，代碼異味可以啟發何時重構，如何重構。因此，可以說代碼異味推動著重構的進行。

該術語似乎由肯特・貝克於 90 年代後期，在 WardsWiki 上首次使用。且自從在 _Refactoring. Improving the Design of Existing Code_. 被提到過，使用率就大大的提高。代碼異味同時也是敏捷開發者常用的術語。

什麼是，或者不是代碼異味，是一個主觀的判斷，通常因語言、開發者、開發方法的不同而不同。對於 Java 開發語言，有些工具，比如 Checkstyle、PMD 和 FindBugs 可以自動檢測一些代碼異味。

## 常見的代碼異味

* 代碼重複：相同或者相似的代碼存在於一個以上的地方。
* 長方法：一個非常長的方法、函式或者過程。
* 巨類：一個非常龐大的類。
* 太多的參數：函式或者過程的冗長的參數列使得代碼可讀性和品質非常差。
* 特性依戀：一個類過度的使用另一個類的方法。
* 親密關係：一個類依賴另一個類的實現細節。
* 拒絕繼承：子類以一種『拒絕』的態度，覆蓋基礎類別中的方法，換句話說，子類不想繼承父類別中的方法，參考里氏替換原則。
* 冗餘類 / 寄生蟲：一個功能太少的類。
* 人為的複雜：在簡單設計已經滿足需求的時候，強迫使用極度複雜的設計模式。
* 超長識別碼：尤其，在軟體工程中，應該毫無保留的使用命名規則來消除歧義。
* 超短識別碼：除非很明顯，一個變數名應該反映它的功用。
* 過度使用字面值：為提高可讀性和避免編碼錯誤，應該使用命名常數。此外，字面值可以且應該在可能的情況下，獨立存放於資原始檔或者指令碼中，在軟體部署到不同區域時，可以很方便地在地化。

## 參見

* 反模式
* 編程原則
* 靜態程式分析工具列表
* 軟體腐敗
* 設計異味
* 軟體缺陷指標

## 參照

## 外部連結

* CodeSmell at c2.com（頁面存檔備份，存於網際網路檔案館）
* Taxonomy of code smells
代碼大全

《**代碼大全**》（Code Complete），亦譯作《**軟體建構之道**》或《**軟體開發實務指南**》，是一本由麥克康奈爾（Steve McConnell）所寫而由微軟所發行關於軟體開發的書。其主張開發者應跳過「先做再修正」（code and fix） 和「始於大設計」（Big Design Up Front）的瀑布模型。

它同時也是軟體建構技術的概要，從變數命名到決定何時去寫出副程序。
這本書贏得了 1993 年的 Jolt Awards 。

麥克康奈爾定義建構中的主要活動有：

* 詳細的軟體設計
* 建構計劃
* 撰碼和除錯
* 單元測試
* 軟體整合
* 整合測試

儘管他並沒有否定其它軟體開發的觀點，如需求和文件， 麥克康奈爾強調軟體建構的原因為：

* 建構為軟體開發中的一大部分
* 建構為軟體開發中的核心活動
* 當聚焦於建構，可以大幅增進個別程式設計師的生產力
* 建構後的産品，即原始碼，通常是此軟體唯一正確的描述
* 建構為唯一保證有完成的活動

本書分成四個部份

* 前兩個部份在訴說：透過技術如何提昇程式碼品質
* 後兩個部份在訴說：透過管理如何提昇程式碼品質

## 版本

* ISBN 978-1556154843 第一版 (1993 年)
* ISBN 978-0735619678 第二版 (2004 年六月)
* ISBN 7-121-02298-2 簡體中文版《代碼大全》
* ISBN 9789866800115 繁體中文版《軟體建構之道》
* ISBN 9789864341313 繁體中文版《軟體開發實務指南》

## 參考

## 外部連結

* 代碼大全第二版網站
* Steve McConnell 的網站（頁面存檔備份，存於網際網路檔案館）
* 檢視代碼大全
代碼奔騰

《**代碼奔騰**》（英語：**Code Rush**）是大衛・溫頓（David Winton）導演於 1998 年至 2000 年間所拍攝的紀錄片，紀錄了矽谷的 Netscape 工程師們將瀏覽器原始碼釋出，成為 Mozilla 計畫的經過，同時 Netscape 也正經歷被美國線上併購的過程。該紀錄片描繪了 Netscape 的工程師們，放棄正常生活與家庭，試圖挽救公司免於倒閉的命運。

Mozilla Firefox 3 發布後的 2009 年，Andy Baio 將紀錄片上傳到個人網站，導演大衛・溫頓雖然一開始要求移除檔案，但後來決定以 BY-NC-SA 授權釋出。

網路名人阮一峰在他的部落格上介紹說：「如果你對軟體業感興趣，希望了解程式設計師的生活，以及 Mozilla 專案的起源和創造它的人們，那麼千萬不要錯過這部紀錄片。我保證這是一部過目難忘的作品。」

## 參考資料

## 外部連結

* YouTube 上的《Code Rush》多國語言字幕
* 優酷網上的「《Code Rush》簡體中文字幕注釋版」影片（簡體中文）
* 網際網路電影資料庫（IMDb）上《代碼奔騰》的資料（英文）
代碼庫

在軟體開發中，**代碼庫**（英語：code base 或 codebase）是用於構建特定軟體系統、應用程式或軟體組件一組的原始碼。

通常，代碼庫僅包含人工編寫的原始碼文件；代碼庫通常不包含由工具生成的原始碼文件或二進位文件（目標文件），因為它們可以從人工編寫的原始碼構建生成，沒有必要加入代碼庫。但是，代碼庫通常包括配置文件和屬性文件，因為這些文件是構建時所必不可少的數據。

代碼庫通常存儲在版本控制系統中的倉庫（repository）中。對於較小的項目，可以將其保存為一組簡單的文件（甚至連 Linux 內核都通過這種形式維護了很多年）。倉庫是一個公共或私有的保存大量原始碼的地方。大多數倉庫會用作備份、版本控制，在多人開發的項目中會幫助處理各種代碼版本問題，如：開發者同時修改源碼導致的衝突。現今，流行使用 Subversion，Git 和 Mercurial 等工具構建倉庫（repository）並處理上述的事情，在開源項目十分流行。

## 參見

* Git
* Github
* Gitee
* 分散式版本控制
* 倉庫 (版本控制)

## 參考
代碼摺疊

**語法摺疊**功能允許使用者掩藏和顯露原始代碼內部分割區塊。這個功能有助於對代碼結構的整體了解。

## 有摺疊功能的編輯器

許多文字編輯器提供了摺疊功能，其中有：

## 參見

* 語法突顯顯示

## 外部連結

* SciTE 主頁 （頁面存檔備份，存於網際網路檔案館）
* Notepad++ 主頁 （頁面存檔備份，存於網際網路檔案館）
代碼瀑布

**代碼瀑布**（英語：Matrix digital rain）又稱為**母體代碼**（Matrix code）或**綠雨**（Green rain），是電影《駭客任務》中出現的電腦代碼。下降的綠色代碼是一種在屏幕上表示母體虛擬現實環境活動的方式，在《駭客任務》三部曲以及《駭客任務立體動畫特集》中均以此作為片頭，這是專營權的標誌，類似於《星際大戰》中的開場爬行字幕。

## 背景

在影片中，包含矩陣本身的代碼經常表示為向下流動的綠色字符。該代碼使用由 Simon Whiteley 設計的自定義字體，其中包括半形片假名字符和西方拉丁字母和數字的鏡像。在 2017 年 CNET 的一次採訪中，他將設計歸因於來自日本的妻子，並補充道：「我想告訴大家，《駭客任務》的代碼是由日本壽司食譜製成的。」由於字母在屏幕上留下熒光痕跡，因此效果類似於舊的綠色屏幕顯示。

數字雨的前身存在於電影 Meteo 的「代碼場景」中，該電影是 1989 年的匈牙利實驗流行文化電影。1995 年的賽博朋克電影《攻殼機動隊》對《駭客任務》有很強的影響力，其開場白與數字雨類似。

尚未發布《駭客任務》三部曲和《尼歐的路徑》遊戲網站中實際使用的代碼字體的正式版本。 已進行了多次模仿，大多數以屏幕保護程序的形式進行。

## 文化影響

荷蘭音樂家阿讓・安東尼・盧卡森（Arjen Anthony Lucassen）在他的樂隊 Star One 於 2010 年發行的專輯《現代受害者》中將這首歌命名為「數字雨」，以紀念這部電影。

該效果還啟發了許多非官方的以《駭客任務》為主題的螢幕保護程式的創造。

## 參考來源
代碼稽核

**代碼稽核**（Code audit）是一種以發現程式錯誤，安全漏洞和違反程式規範為目標的原始碼分析。它是防禦性編程範式的一部分。該範式的目標是在程式發布前減少錯誤。C 和 C++ 原始碼是最常見的分析物件，因為其他更高層的語言如 Python 擁有更少可能存在漏洞的函式（比如不檢查邊界條件）。

## 參考文獻
代碼美化器

**Prettyprint** 又叫**漂亮列印**、**代碼美化器**，是指將各種風格的排版應用於文本文件，如原始碼、置標語言以及類似內容。這些排版可能需要遵守縮進風格，並使用不同的顏色和字體來語法突顯原始碼的語法元素，或調整源代碼的大小，以便於源代碼內容更容易閱讀和理解。

## 外部連結

* Algorithm 268: ALGOL 60 reference language editor _William M. McKeeman_: Commun. ACM 8(11): 667-668 (1965)
* lgrind （頁面存檔備份，存於網際網路檔案館）, Comprehensive TEX Archive Network
* NEATER2: a PL/I source statement reformatter _Kenneth Conrow, Ronald G. Smith_: Commun. ACM 13(11): 669-675 (1970)
* SOAP - Simplify Obscure Algol Programs （頁面存檔備份，存於網際網路檔案館） _R. S. Scowen, D. Allin, A. L. Hillman, M. Shimell_: National Physical Laboratory Central Computer Unit report CCU6 （頁面存檔備份，存於網際網路檔案館） (April, 1969) Includes formatted listing of SOAP source code.
  * SOAP - A Program which Documents and Edits ALGOL 60 Programs. _R. S. Scowen, D. Allin, A. L. Hillman, M. Shimell_: Comput. J. 14(2): 133-135 (1971)
  * Original SOAP Source Code from the KDF9 (unformatted) （頁面存檔備份，存於網際網路檔案館）
* SOAP User's Guide. （頁面存檔備份，存於網際網路檔案館） (for Edinburgh IMP) _Peter Salkeld Robertson_ (1976)
  * SOAP Source Code （頁面存檔備份，存於網際網路檔案館） in/for IMP9
* Soap80: A Program for Formatting IMP80 Source Programs. （頁面存檔備份，存於網際網路檔案館） _J.M. Murison, Edinburgh Regional Computer Center_ (1980)
  * SOAP Source Code （頁面存檔備份，存於網際網路檔案館） in/for IMP80 _E. N. Gregory, University of Kent at Canterbury; Peter D. Stephens, Edinburgh Regional Computer Center_
* PRETTYP.PAS （頁面存檔備份，存於網際網路檔案館） Early pascal prettyprinter. _Ledgard et al._
* Pascal With Style （頁面存檔備份，存於網際網路檔案館） (1979)
* style (9) （頁面存檔備份，存於網際網路檔案館） FreeBSD style guidelines
* vgrind （頁面存檔備份，存於網際網路檔案館）, The [Unix] Heirloom Project
* Formatting your source code （頁面存檔備份，存於網際網路檔案館） GNU style guidelines
代碼複製

**代碼重複**（英文：**duplicate code**，也叫**代碼複製**）在程式設計中表示一段原始碼在一個程式，或者一個團體所維護的不同程式中重複出現，是不希望出現的現象。為避免巧合，只有一定數量的代碼完全相同才能判定為代碼重複。重複代碼的段落有時被稱為代碼複製，自動檢測代碼重複的過程叫做**複製檢測**。

## 產生

產生代碼重複可能有以下幾個原因：

* 因為某段代碼能用就複製貼上過來。多數情況下代碼會有少許不同，如變數名稱改變或代碼增刪。
* 因為要實現與已有功能類似的功能，開發者獨立寫出與別處相似的代碼。研究表明獨立撰寫的代碼在語法上不一定相似。
* 抄襲，即不經允許複製代碼，且未列出著作權歸屬。
* 代碼系自動生成。這時可能需要重複代碼以提高效能或方便開發。註：這裡代碼重複是指碼產生器自動生成的代碼，而非生成器本身的代碼。

## 成本與效益

不恰當的代碼重複表明程式設計不良，例如缺少抽象。這會導致程式過長，錯誤更多，進而難以維護，因為需要人工尋找並修改重複的部分。然而由於種種原因，適當的代碼重複難以避免，例如給與已有裝置相似的新裝置寫驅動程式時，複製代碼能使開發更便捷。

當複製具有軟體漏洞的代碼時，如果開發人員不知道這樣的副本，則複製的代碼中可能會繼續存在漏洞。代碼重構可以改善許多軟體的度量衡標準，例如原始碼行數，循環複雜度和耦合度。這可能會縮短編譯時間，降低認知負載，減少人為錯誤，減少被遺忘或被忽視的代碼。

但並不是所有的代碼重複都可以被重構。如果程式語言提供不充分或過於複雜的抽象，複製或許是具有速度效益上的解決方式，特別是修改代碼使用的編輯器如有支援區塊 (行) 編輯的功能。而且，重構時破壞代碼的風險可能會超過維護的效益。重複的代碼似乎不會比不重複的代碼更容易出錯。使用開源方式共享代碼組件，而不是在軟體組態管理的倉儲庫之間複製它們，也可以減少複製。

## 檢測

檢測代碼重複的手段有：

* Baker 演算法
* Rabin–Karp 字串搜尋演算法
* 利用抽象語法樹
* 視覺化檢測器
* 矩陣計數檢測

## 例子

以計算整數陣列的平均值的代碼片段為例

這兩個迴圈可以覆寫為一個函式：

利用以上函式可以寫出無重複的原始碼

## 參見

* 代碼異味
* 一次且僅一次
* 抽象化 (電腦科學)

## 參考資料
代碼頁437

**代碼頁 437**（**Code page 437**）是始祖 IBM PC（個人電腦）或 MS-DOS 使用的字元編碼。又名為 CP437、OEM 437 PC-8、或 MS-DOS Latin US。該字集包含 ASCII 由 32–126 的字碼、附加符號、一些希臘字母、圖示以及製圖符號。其有時也稱為「OEM 字型」或「high ASCII」或「extended ASCII」（互不相容的眾多 ASCII 擴充字集之一）。

嚴格來說，此字元集並非打算用來做什麼「代碼頁」；而只不過是在當時的 IBM PC 用來圖像化的表現字形而已。此字元集仍然是所有 EGA 以及 VGA 相容顯示卡核心的主要字型。當電腦啟動時，在載入任何儲存媒體之前所使用的就是此「代碼頁」。。大多數在 IBM PC 時代開發的檔案格式，例如.nfo，都是內定以此為預設編碼。

## 顯示卡

最初的 IBM PC 以每個字元 9×14 像素的形式儲存在 MDA 顯示卡旳唯讀記憶體，以及以每個字元 8×8 像素的形式儲存在 CGA 顯示卡。EGA 包含的是 8×14 像素的版本，而 VGA 包含的是 9×16 像素的版本。

此等顯示卡全都有文字模式，當中每個字元方塊包含 8 位元的字元碼位，亦即提供一共 256 個字元。所有 256 個碼位都分配予唯讀記憶體中的圖像字元，當中 0 至 31 的碼位保留予 ASCII 用作非圖像控制字元。

## 代碼頁

代碼頁有兩個主要功：

1. 作為_資訊交換碼_（以檔案和電訊形式），當中 0 至 127 碼位擔當的角式與 ASCII 的相同，而 128 至 175 碼位代表國際文字字元（見下表）；
2. 作為_用於螢幕和印表機的圖像資源_（該字元可用於顯示或列印），整段 256 個碼位範圍都可用作圖像字元。

## 字元

以下字表顯示代碼頁 437 的字元。每個字元同時顯示其對應的 Unicode 碼位及其十進位值。

### 1–31 和 127 碼位的解讀

1–31 和 127 碼位（00–1Fhex 和 7Fhex）可用作控制或圖像字元，視情況而定。

### 標準代碼頁

下表顯示標準的代碼頁 437。

除了 0 至 31（00hex 至 1Fhex）可用作 ASCII 控制碼及圖像 dingbat 以外，某些字元也有多於一個意義。對應的 Unicode 有可能多於一個，視情況而定：

* 0 和 255（FFhex）都會產生空格；32（20hex）也是。將 255 用作 U+00A0 不換行空格（NBSP）在 IBM PC 時代的文書處理軟體已有先例。
* 176 至 223（B0hex 至 DFhex）為方框繪製字元
* 225（E1hex）是德文的 sharp S（U+00DF, ß），也是希臘文的小階 beta（U+03B2, β）。
* 227（E3hex）是希臘文小階的 pi（U+03C0, π），但早期的字型，例如 Terminal 使用的字型並不明確，有可能是希臘文大階的 pi（U+03A0, Π），也可以是「n 次積符號」（U+220F, ∏）。
* 228（E4hex）是「n 次疊加符號」（U+2211, ∑），也是希臘文大寫的 sigma（U+03A3, Σ）。
* 230（E6hex）是微的符號（U+00B5, µ），也是希臘文小寫的 mu（U+03BC, μ）。
* 234（EAhex）是歐姆符號（U+2126, Ω），也是希臘文大寫的 omega（U+03A9, Ω）。（Unicode 將歐姆符號等同大寫 omega，並建議兩種情況都用後者）).
* 235（EBhex）是希臘文小寫 delta（U+03B4, δ），但也用作冰島文小寫的 eth（U+00F0, ð）和偏微分符號（U+2202, ∂）的替代品。
* 237（EDhex）應當用作希臘文小寫的 phi，但現在主要用作空集符號（U+2205, $\varnothing $ ），還用作用來表示角度的斜體希臘文 phi 符號（U+03D5, $\phi \,\!$ ）、直徑符號（U+2300, $\varnothing $ ）以及拉丁文小寫「帶斜線的小寫 O」（U+00F8, ø）的替代品。
* 238（EEhex）既是希臘文小寫的 epsilon（U+03B5, ε），也是 element-of 符號（U+2208, ∈）。後來還用作歐元符號（U+20AC, €）。

## 另見

* Alt 碼
* ANSI
* ANSI 藝術
* ASCII
* ASCII 藝術
* .nfo 檔案格式（使用 CP437）
* Nibble

## 參考資料

## 外部連結

* IBM Code Page 437 reference chart
* IBM PC memory-mapped video graphics to Unicode（頁面存檔備份，存於網際網路檔案館） on official Unicode site
代碼頁936

**代碼頁 936**（**Codepage 936**）是 Microsoft 的簡體中文字元集標準，是東亞語文的四種雙位元組字元集（DBCS）之一。其最初版本和 GB 2312 一模一樣，但在推出 Windows 95 時擴展成 GBK。

現時中國大陸強制要求所有軟體皆要支援 GB 18030（Microsoft 稱之為代碼頁 54936）。

## 外部連結

* Microsoft's Reference for Codepage 936
* Mapping of Codepage 936 to Unicode（頁面存檔備份，存於網際網路檔案館）
代碼頁950

**代碼頁 950**（**Code page 950**）是微軟的繁體中文字元集標準，由大五碼修改而成，是大五碼的最通行版本，也是大五碼的_事實標準_。此代碼頁並無在 IANA 登記，故不能算是正式網際網路標準，通常只會以「big5」代表。代碼頁 950 和 Big5 最主要的差別是，頁碼 950 在 0xF9D6-0xF9FE 中添加了 7 個倚天中文系統增加的字元（碁、銹、裏、墻、恒、粧、嫺，即倚天擴充字集，俗稱「倚天字」）和 34 個畫圖和製表符號：

由 Windows Me 的版本開始，在 0xA3E1 加入歐元符號（€），之後所有 Windows 版本的頁碼 950 也都有這個符號。

## 參考

## 外部連結

* Microsoft's Reference for Codepage 950Archive.is 的存檔，存檔日期 2013-01-28
* Mapping of Codepage 950 to Unicode （頁面存檔備份，存於網際網路檔案館）
代碼點

在字元編碼術語中，**碼位**或稱**編碼位置**，即英文的 code point 或 code position，是組成碼空間（或頁碼）的數值。 例如，ASCII 碼包含 128 個碼位，範圍是 016 進位到 7F16 進位，擴充 ASCII 碼包含 256 個碼位，範圍是 016 進位到 FF16 進位，而 Unicode 包含 1,114,112 個碼位，範圍是 016 進位到 10FFFF16 進位。Unicode 碼空間劃分為 17 個 Unicode 字元平面（基本多文種平面，16 個輔助平面），每個平面有 65,536（= 216）個碼位。因此 Unicode 碼空間總計是 17 × 65,536 = 1,114,112.

## 定義

碼位的抽象意涵，不同於下列概念:

* 作為具體編碼的位元流。例如，UTF-16 編碼的位元流，既可以是大尾序，也可以是小尾序。
* 具有特定字形的字元。因為字元集中的字元（碼位）的具體外觀隨字型（font）—— 字型顯示樣式 —— 的不同而變化。
* 特定碼空間的編碼方式。例如，一個 Unicode 碼空間的碼位，可以用 UTF-8 編碼；也可以用 UTF-16 編碼。
* 用不同字形顯示一個字元，即字位.

## 參考
代祖

**劉謙**（9 世紀？—894 年），《新唐書》作**劉知謙**，字內光，唐朝末年時人，原籍蔡州上蔡縣。

## 生平

其父劉安仁遷居福建，以經商為生。劉謙從軍於南海（治所在今廣東省廣州市），為牙校，職位低微，但容貌氣度非常出眾，當時的嶺南東道節度使韋宙把一個姪女嫁給了他。韋宙的妻子嫌劉謙卑微，韋宙說：「此人非常流也，他日我子孫或可依之。」後因邀擊黃巢有功，882 年任封州（治所在今廣東省新興縣）刺史、賀江鎮遏使，有士卒萬人，戰艦百餘艘。

894 年，劉謙死，留有三子，妻子韋氏（韋宙的姪女）所生劉隱、劉台，妾段氏所生劉巖。劉隱繼位，劉隱征戰四方，兵強馬壯，朱溫封為南海王。

917 年，劉隱歿後，劉巖稱帝，國號漢，史稱為南漢。追尊劉謙為聖武皇帝，廟號代祖。

## 身世爭議

藤田豐八在 1935 年認為他是大食（阿拉伯帝國）商人後裔，從西亞到福建泉州，謊稱河南上蔡籍，而唐宋蕃客中劉姓多為伊斯蘭的穆斯林。

藤田氏此說遭桑原隲藏質疑。桑原認為，關於宋元祐間廣州蕃坊娶宗女的劉姓人為阿拉伯人的說法，不能用以證明南漢劉氏是阿拉伯人的後裔，相反，宋元祐間廣州蕃客的劉姓，可能是南漢所賜。陳寅恪在 1939 年撰文《劉復愚遺文中年月及其不祀祖問題》考證，「家世無九品之官，四海無強大之親，父子俱以儒學進仕至中書舍人禮部尚書，而不祭祀先祖，及籍貫紛歧，而俱賈胡（註：通商的胡人）僑寄之地三端，推證之如此。」，然而據現代考證發現藤田豐八與陳寅恪的說法並不合理，指出劉謙家族是來自淮北地區的漢族人。

## 參考文獻

## 外部連結

* 《新五代史・南漢世家第五》（頁面存檔備份，存於網際網路檔案館）
代禱教堂_(曼哈頓)

**代禱教堂**（英語：Church of the Intercession）是位於美國紐約市曼哈頓的一座美國聖公會教堂。教堂始建於 1846 年，現在的建築修建於 1912 年至 1915 年。是一座哥特復興式建築。在 1906 年至 1976 年期間，該教堂是三一教堂的禮拜堂。1966 年，代禱教堂被列入紐約市地標，1980 年被列入國家史跡名錄。

## 參考資料

## 外部連結

* Official website（頁面存檔備份，存於網際網路檔案館）
代科瓦亞峰

**代科瓦亞峰**（英語：Daykovaya Peak）是南極洲的山峰，位於毛德皇后地的沃爾塔特山脈，屬於彼得曼山脈中西彼得曼山脈的一部分，海拔高度 1,995 米，該山峰由德國探險隊發現。
代穆斯

**代穆斯**（西班牙語：Daimús），是西班牙瓦倫西亞自治區瓦倫西亞省的一個市鎮。總面積 3 平方公里，總人口 1922 人（2001 年），人口密度 641 人 / 平方公里。

## 參考文獻
代穆维尔

**代穆維爾**（法語：Démouville，法語發音：[demuvil] （ 聆聽））是法國卡爾瓦多斯省的一個市鎮，位於該省中部，屬於康城區。

## 地理

代穆維爾（49°10'51"N, 0°16'8"W）面積 3.56 平方千米，位於法國諾曼第大區卡爾瓦多斯省，該省份為法國西北部沿海省份，北瀕大西洋英吉利海峽，東北與濱海塞納省以海上邊界相接，東臨厄爾省，南至奧恩省，西與芒什省接壤。

與代穆維爾接壤的市鎮（或舊市鎮、城區）包括：巴訥維爾拉康帕涅、卡尼、屈韋爾維爾、日貝維爾、薩內維爾。

代穆維爾的時區為 UTC+01:00、UTC+02:00（夏令時）。

## 行政

代穆維爾的郵政編碼為 14840，INSEE 市鎮編碼為 14221。

## 政治

代穆維爾所屬的省級選區為特羅阿恩縣。

## 人口

代穆維爾於 2019 年 1 月 1 日時的人口數量為 3117 人。

## 參見

* 卡爾瓦多斯省市鎮列表

## 參考文獻
代笔

**捉刀**，指代別人行事、作文，從事此行為者俗曰「**捉刀人**」、「槍手」、「替槍」，是一種以代別人行事、作文，或代筆文學作品，如書、記事、劇本等為生的著作家。「槍手」、「捉刀人」也可指受他人委託，冒充他人出席考試的人。

## 典故

「捉刀」一詞，出自《世說新語》的故事：魏王曹操將要接見匈奴使臣，但自認容貌醜陋，姿貌短小，不足在外國稱雄，就命「眉疏目朗，鬚長四尺餘」的崔琰假裝魏王，接見匈奴使臣。曹操自己扮成侍衛的武士，持刀站在床頭。接見完畢，派間諜問匈奴使臣：「魏王何如？」使臣回答：「魏王之高雅名望果然非比尋常，但是床頭捉刀人乃英雄也！」曹操聽到此事，就派人追殺此識人之使臣。

## 事例

「捉刀人」又稱「刀客」、「刀手」，近代以來由刀而槍，又稱**槍手**。槍手與雇主私下交易並完成工作的過程被俗稱為「替槍」或「請槍」。此種行為通常是違規或違法，並嚴重擾亂社會的公平原則，從而遭到輿論譴責。雇主通常指學生（特別是大學學生）、作家或出版商。槍手所從事的工作包括替考、頂替面試、代寫畢業論文、代寫作業、文章或其他任何秘密工作。

高士奇、查慎行曾為清朝康熙帝的捉刀人，沈德潛曾為乾隆帝的捉刀人。沈德潛死後，其門人將他為乾隆捉刀的詩作編入他的文集，乾隆因此大為惱火，將該人抄家。

### 現今

時至今日，大學內的替槍作弊行為有日趨嚴重之態勢，並已經成為一種黑色產業。「槍手」一詞也因此往往特指該等受僱於大學學生的人，該等人通常是年長的學生、畢業生甚至是教師。

## 參見

* 《模犯生》
* 托兒
* 論文工廠：接受委託，代寫論文的公司

## 參考文獻
代筆作家_(電視劇)

《**影子寫手**》（日語：ゴーストライター，英語：_Ghostwriter_），為日本富士電視台於 2015 年 1 月起在火九時段（週二 21:00 - 21:54，JST）播出的電視連續劇，由中谷美紀主演，亦是中谷睽違 13 年的電視劇主演作。

## 製作概要

2014 年 2 月，日本爆出知名音樂家佐村河內守的「捉刀事件」，引起社會譁然。此劇以該事件為發想靈感，企劃出以作家為主角的捉刀題材。

此劇亦是中谷美紀睽違 13 年之後，再度擔任民營電視台主演。上一部主演作為 2002 年播出的《TOP LADY》。

## 劇情大綱

智慧與氣質雙全、被譽為「天才作家」的遠野理紗（中谷美紀 飾），創作的作品部部大賣，七年來被影像化的作品亦大受歡迎，遠野因而以「明星作家」的身分，擔任知名小說新人獎的評審委員。

而夢想成為小說家的川原由樹（水川麻美 飾），雖已有未婚夫，但為了自己的理想，毅然決然的要求未婚夫等待一年，允許自己到東京參加小說獎徵選，實現夢想。在比賽結果未公布時，川原積極的拿著自己的原稿到出版社毛遂自薦，但皆嘗到了閉門羹，被出版社以「沒有才華」的理由拒絕。

此時，川原來到了名稱為「駿峰社」的出版社，偶然間遇見了駿峰社的年輕菜鳥編輯小田颯人（三浦翔平 飾）。正在急著為遠野理紗尋找新任助手的小田，表示要將川原介紹給旗下合作的明星作家遠野，讓川原擔任遠野的助手。川原並將自己的作品交給小田，希望小田能抽空閱讀並給予意見。小田閱讀完川原的創作後，對川原的寫作才華激賞不已。

其後，川原通過試用期，正式成為作家遠野的正式助手，川原獲知能在自己欣賞的大作家手下工作，興奮不已，甚至推遲回家鄉結婚的計畫。此時正值靈感枯竭的遠野，因一篇出版社邀稿的文章，無意中看見助手川原提供的文案，得知了川原的寫作能力……。兩個女人之間的祕密，因而展開。

## 演員陣容

* 遠野理紗 - 中谷美紀

　
: 知性與美貌兼具的女性天才小說家。

* 川原由樹 - 水川麻美

　
: 離開故鄉長野到東京追求小說家夢想的女性。

* 小田颯人 - 三浦翔平

　
: 知名出版社・駿峰社擔任文藝雜誌編輯。

* 塚田真奈美 - 菜菜緒

　
: 知名出版社・駿峰社擔任文藝雜誌編輯。

* 岡野慎也 - 羽場裕一

　
: 駿峰社的單行本主編。

* 坪田智行 - 水橋研二

　
: 駿峰社文藝雜誌編輯部主任。神崎的部下。

* 尾崎浩康 - 小柳友

　
: 由樹的未婚夫，是她在故鄉長野的高中同班同學。

* 遠野大樹 - 高杉真宙

　
: 理紗的兒子。

* 田浦美鈴 - 木村綠子

　
: 遠野理紗的秘書，管理能力過人。

* 遠野元子 - 江波杏子

　
: 理紗的母親。

* 鳥飼正義 - 石橋凌

　
: 四大出版社之一，駿峰社的常務董事。

* 神崎雄司 - 田中哲司

　
: 駿峰社最有能力的文藝雜誌主編。

## 製作人員

* 劇本：橋部敦子
* 企畫：增本淳
* 導演：土方政人、佐藤源太
* 製作人：小林宙
* 製作：共同電視
* 片頭曲：〈Unlock〉三浦大知（SONIC GROOVE 發行）
* 主題曲：〈Ghost〉androp（日本華納音樂發行）
* 出品：富士電視台

## 播出日程及收視率

## 參考資訊

## 外部連結

* 富士電視台官方網站 （頁面存檔備份，存於網際網路檔案館）（日語）
* 富士電視台概要介紹（日語）
* MY 101 綜合台官方網站 （頁面存檔備份，存於網際網路檔案館）（繁體中文）
代策姆

**代策姆**（德語：Detzem）是德國萊茵蘭 - 普法爾茨州的一個市鎮。總面積 5.56 平方公里，總人口 551 人，其中男性 266 人，女性 285 人（2011 年 12 月 31 日），人口密度 99 人 / 平方公里。

## 參見

* 萊茵蘭 - 普法爾茨州市鎮列表

## 參考
代簡王

**代簡王朱桂**（1374 年 8 月 25 日 —1446 年 12 月 29 日），是明代藩王，明太祖第十三子，生母郭惠妃。

## 生平

他在洪武七年七月十八日（1374 年 8 月 25 日）生，洪武十一年（1378 年）正月封豫王，封國南昌府。洪武二十五年（1392 年）三月改封代王，同年就藩大同府。洪武二十六年（1393 年），徐妃生朱桂子朱遜煓。

他性格暴躁，建文元年（1399 年）時，因罪被廢為庶人。

成祖即位後，恢復了朱桂的王爵。但朱桂仍然沒有改進，成祖曾賜璽書給他說：「聞弟縱戮取財，國人甚苦，告者數矣，且王獨不記建文時耶？」又下令從今起王府不得擅役軍民、斂財物。當時朱桂已經多次被人控訴行為不軌，成祖賜敕列其 32 條罪狀，召朱桂入朝，然而朱桂不來。成祖第二次召他時，在中途把他遣還，但把他的三護衛革去，直到永樂十六年（1418 年）才恢復護衛。

朱桂在正統十一年十二月十二日（1446 年 12 月 29 日）去世，諡曰**簡**，由孫朱仕㙻繼承王爵。

## 家庭

### 妻

* 徐氏（－1427 年），徐達第二女，仁孝文皇后之妹，洪武二十四年（1391 年）九月封豫王妃，次年改封代王妃，生朱遜煓、朱遜𤆼。晚年被逐出王府，與長孫朱仕㙻等居住。

### 妾

* 呂氏，正統十四年（1449 年）封代簡王夫人，生朱遜𤇜。
* 徐氏，正統十三年（1448 年）封代簡王夫人，生朱遜煁、朱遜炓、朱遜烠、朱遜熮。性格驕妒，正統年間曾漆朱桂二侍女為癩。屢次偷盜王府財物給親子朱遜炓、朱遜烠，致使朱桂薨後無錢治喪。
* 劉氏，代王宮人，生壺關郡主。

### 子

* 第一子：代悼戾世子→代戾王（追封）朱遜煓
* 第二子：廣靈榮虛王朱遜𤇜
* 第三子：潞城僖順王朱遜𤆼
* 第四子：山陰康惠王朱遜煁
* 第五子：襄垣恭簡王朱遜燂
* 第六子：靈丘榮順王朱遜烇
* 第七子：宣寧靖莊王朱遜炓
* 第八子：懷仁榮定王朱遜烠
* 第九子：朱遜熩，正統三年四月未封薨。
* 第十子：隰川懿安王朱遜熮
* 第十一子：朱遜燔

### 女

* 第四女：鄉寧郡主，宣德四年（1429 年）封，儀賓范欽
* 第六女：壺關郡主，正統二年（1437 年）封，儀賓秦安
* 第七女：保德郡主，正統六年（1441 年）封，儀賓常濟

## 歷史遺物

代王府早於明末清初時毀於戰火，代王府大概位於今大同市大南街一帶，九龍壁即代王府前照壁，為全國重點文物保護單位，臨近建築有東城牆、鼓樓、南城牆、華嚴寺、圓通寺、鳳臨閣等。大同九龍壁與北京故宮九龍壁、北京北海九龍壁合稱「明清三大九龍壁」。

大同九龍壁來歷有這樣一個故事，據說朱桂的王妃徐氏生性貪婪，一次隨朱桂入京朝見，見到故宮九龍壁華麗漂亮，便要求朱桂在大同也建一個比故宮還大的九龍壁，朱桂回藩國後，便建下了這座最大的九龍壁，並且一直流傳至今。

## 參考文獻

## 外部

* 《明史・代王傳》辨誤
代米

**代米**（法語：Dému，法語發音：[demy]；奧克語：Demú）是法國熱爾省的一個市鎮，屬於孔東區。

## 地理

代米（43°45'55"N, 0°9'59"E）面積 28.89 平方千米，位於法國奧克西塔尼大區熱爾省，該省份為法國西南部內陸省份，北起順時針與洛特 - 加龍省、塔恩 - 加龍省、上加龍省、上庇里牛斯省、大西洋庇里牛斯省和朗德省接壤。

與代米接壤的市鎮（或舊市鎮、城區）包括：巴斯庫、卡斯蒂隆代巴特、埃斯帕、拉訥帕克斯、馬爾古厄梅梅、努朗、拉穆藏、塞阿耶、維克弗藏薩克。

代米的時區為 UTC+01:00、UTC+02:00（夏令時）。

## 行政

代米的郵政編碼為 32190，INSEE 市鎮編碼為 32115。

## 政治

代米所屬的省級選區為弗藏薩克縣。

## 人口

代米於 2019 年 1 月 1 日時的人口數量為 328 人。

## 參見

* 熱爾省市鎮列表

## 參考文獻
代米·拉米雷斯

**代米・拉米雷斯**（西班牙語：Daimí Ramírez，1983 年 10 月 8 日 —），古巴排球運動員。她曾代表古巴參加 2004 年和 2008 年夏季奧林匹克運動會排球比賽，其中 2004 年奧運會獲得一枚銅牌，2008 年奧運會則獲得第四名。

## 參考資料
代米安

**代米安**（法語：Démuin，法語發音：[demɥɛ̃]）是法國上法蘭西大區索姆省的一個市鎮，屬於蒙迪迪耶區。

## 地理

代米安（49°49'13"N, 2°32'12"E）面積 11.23 平方千米，位於法國上法蘭西大區索姆省，該省份為法國北部沿海省份，北起加萊海峽省和諾爾省，西接濱海塞納省和大西洋英吉利海峽，南至瓦茲省，東臨埃納省。

與代米安接壤的市鎮（或舊市鎮、城區）包括：歐貝爾庫爾、桑泰爾地區博庫爾、呂瑟河畔多馬爾、昂加爾、伊尼歐庫爾、桑泰爾地區梅濟耶爾、維萊歐埃拉布勒、維萊布勒托訥。

代米安的時區為 UTC+01:00、UTC+02:00（夏令時）。

## 行政

代米安的郵政編碼為 80110，INSEE 市鎮編碼為 80237。

## 政治

代米安所屬的省級選區為莫勒伊縣。

## 人口

代米安於 2019 年 1 月 1 日時的人口數量為 524 人。

## 參見

* 索姆省市鎮列表

## 參考文獻
代米尔卡皮亚区

**德米爾卡皮雅區**（Општина Демир Капија），為北馬其頓的一個區。

「德米爾卡皮雅」一詞來自土耳其語，意為「鐵門」。總面積 311.06 km²，總人口 4545 人（2018）。區治位於德米爾卡皮雅鎮。德米爾卡皮雅區為瓦爾達爾統計區的一部分。
代米尔希萨尔区

**德米爾希薩爾區**(Општина Демир Хисар), 為北馬其頓的一個區。該區西臨里森區、奧赫里德區、德巴爾查區，北鄰德魯戈沃區，東鄰克魯塞沃區、莫吉拉區，南鄰比托拉區。總面積 480,13 km²，總人口 9,497。區治位於德米爾希薩爾。「德米爾希薩爾」，來源自土耳其語，意為「鋼鐵堡壘」。該區為 Pelagonia 統計區的一部分。

## 外部連結

* Demir Hisar municipality on a Macedonian general information Site
代米爾吉

**代米爾吉**（土耳其語：Demirci）是土耳其的城鎮，由馬尼薩省負責管轄，位於該國西部，面積 1,473 平方公里，海拔高度 853 米，主要經濟活動有農業和畜牧業，是手工土耳其地毯的生產地之一。2000 年人口 21,230。

## 參考文獻

## 外部連結

* District governor's official website（頁面存檔備份，存於網際網路檔案館） （土耳其文）
* Road map of Demirci and environs
* Various images of Demirci, Manisa（頁面存檔備份，存於網際網路檔案館）
代米耶尔

**代米耶爾**（西班牙語：Daimiel），是西班牙卡斯蒂利亞 - 拉曼恰雷阿爾城省的一個市鎮。 總面積 438 平方公里，總人口 17095 人（2001 年），人口密度 39 人 / 平方公里。

## 參考文獻
代米茨-图米茨

**代米茨 - 圖米茨**（德語：Demitz-Thumitz）是德國薩克森邦的市鎮，隸屬於包岑郡。總面積為 21.09 平方公里，截至 2021 年 12 月 31 日總人口為 2,639 人。

## 參見

* 薩克森邦市鎮列表

## 參考來源