Skip to content

Commit

Permalink
update opencc to 1.1.9
Browse files Browse the repository at this point in the history
  • Loading branch information
yingang committed Aug 8, 2024
1 parent 55b40ef commit 3404863
Show file tree
Hide file tree
Showing 5 changed files with 6 additions and 6 deletions.
2 changes: 1 addition & 1 deletion docs/zh-tw/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,6 @@
|information leakage|資訊洩露|沒有用“洩漏”|
|pass-through|透傳|用於“透傳方法”、“透傳變數”、“透傳引數”等場景|
|public method / variables|公有方法 / 公有變數|沒有用“公開”是希望與 expose 和 exposure 等術語的翻譯混淆|
|selection|區域選擇 / 選擇的區域 / 所選區域|影象介面文字編譯器中的示例,直接翻譯成“選擇”會不太清晰|
|selection|區域選擇 / 選擇的區域 / 所選區域|影像介面文字編譯器中的示例,直接翻譯成“選擇”會不太清晰|
|shallow module / class|淺模組 / 淺類|沒有用“淺層”,和 deep 的翻譯選擇是同樣的原因|
|web browser / server|Web 瀏覽器 / Web 伺服器|沒有用“網路”或“網頁”是希望避免與 network 和 web page 等術語的翻譯混淆,就保留英文了|
2 changes: 1 addition & 1 deletion docs/zh-tw/ch08.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

## 8.1 示例:編輯器文字類

考慮為影象介面文字編輯器管理檔案文字的類,這在 [第 6 章](ch06.md)[第 7 章](ch07.md) 中討論過。該類提供了將檔案從磁碟讀入記憶體、查詢和修改檔案在記憶體中的副本以及將修改後的版本寫回磁碟的方法。當學生們要實現這個類時,許多人選擇了面向行的介面,該介面具有讀取、插入和刪除整行文字的方法。這導致了類實現起來很簡單,但也為更高層級的軟體帶來了複雜性。在使用者介面的層級,很少涉及整行操作。例如,擊鍵會導致在現有行中插入單個字元;複製或刪除選擇的區域可能同時修改幾個不同的行。使用面向行的文字介面,更高層級的軟體必須自行拆分和連線行以實現使用者介面。
考慮為影像介面文字編輯器管理檔案文字的類,這在 [第 6 章](ch06.md)[第 7 章](ch07.md) 中討論過。該類提供了將檔案從磁碟讀入記憶體、查詢和修改檔案在記憶體中的副本以及將修改後的版本寫回磁碟的方法。當學生們要實現這個類時,許多人選擇了面向行的介面,該介面具有讀取、插入和刪除整行文字的方法。這導致了類實現起來很簡單,但也為更高層級的軟體帶來了複雜性。在使用者介面的層級,很少涉及整行操作。例如,擊鍵會導致在現有行中插入單個字元;複製或刪除選擇的區域可能同時修改幾個不同的行。使用面向行的文字介面,更高層級的軟體必須自行拆分和連線行以實現使用者介面。

面向字元的介面(如 [第 6.3 節](ch06.md) 中所述)下沉了複雜性。使用者介面軟體現在可以插入和刪除任意範圍的文字,而無需拆分和連線行,因此變得更加簡單。文字類的實現可能會變得更加複雜:如果內部將文字表示為行的集合,則必須拆分和連線行以實現面向字元的操作。但這種方法更好,因為它在文字類中封裝了拆分和連線的複雜性,從而降低了系統的整體複雜性。

Expand Down
4 changes: 2 additions & 2 deletions docs/zh-tw/ch09.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ return;
接下來的章節將透過三個示例說明上述原則。在其中兩個示例中,最好的方法是分開相關的程式碼段。而在第三個示例中,最好將它們組合到一起。
第一個示例由[第 6 章](ch06.md)的影象介面編輯器專案中的插入游標和區域選擇組成。編輯器會顯示一個閃爍的垂直線,用來指示使用者鍵入的文字將出現在文件中的何處。它還會顯示一個高亮顯示的字元範圍,稱之為選擇的區域,用於複製或刪除文字。插入游標始終可見,但是有時可能沒有選擇文字。如果存在選擇的區域,則插入游標始終位於其某一端。
第一個示例由[第 6 章](ch06.md)的影像介面編輯器專案中的插入游標和區域選擇組成。編輯器會顯示一個閃爍的垂直線,用來指示使用者鍵入的文字將出現在文件中的何處。它還會顯示一個高亮顯示的字元範圍,稱之為選擇的區域,用於複製或刪除文字。插入游標始終可見,但是有時可能沒有選擇文字。如果存在選擇的區域,則插入游標始終位於其某一端。
區域選擇和插入游標在某些方面是相關的。例如,游標始終位於所選區域的一端,並且傾向於將插入游標和區域選擇一起操作:單擊並拖動滑鼠同時修改兩者,然後插入文字時會首先刪除所選的文字(如果有),然後在游標位置插入新的文字。因此,使用單個物件來管理區域選擇和插入游標似乎是合乎邏輯的,並且有一個專案團隊就採用了這種方法。該物件在檔案中儲存了兩個位置,以及兩個布林值,用來指示游標位於所選區域的哪一端以及是否存在所選區域。
Expand Down Expand Up @@ -170,7 +170,7 @@ private static class NetworkErrorLogger {

## 9.7 示例:編輯器的撤消機制

[第 6.2 節](ch06.md)的影象介面編輯器專案中,要求之一是支援多級的撤消/重做,不僅是文字的改動,還有區域選擇、插入游標、和檢視的改動。例如,如果使用者選擇了一些文字,將其刪除,滾動到檔案中的其他位置,然後使用撤消操作,則編輯器必須將其狀態恢復為刪除前的狀態。這包括還原已刪除的文字、再次選擇它、並使所選的文字在視窗中可見。
[第 6.2 節](ch06.md)的影像介面編輯器專案中,要求之一是支援多級的撤消/重做,不僅是文字的改動,還有區域選擇、插入游標、和檢視的改動。例如,如果使用者選擇了一些文字,將其刪除,滾動到檔案中的其他位置,然後使用撤消操作,則編輯器必須將其狀態恢復為刪除前的狀態。這包括還原已刪除的文字、再次選擇它、並使所選的文字在視窗中可見。

一些學生專案將整個撤消機制實現為文字類的一部分。文字類維護所有可撤消更改的列表。每次更改文字時,它都會自動將條目新增到此列表中。對於區域選擇、插入游標和檢視的更改,使用者介面程式碼將呼叫文字類中的相應方法,以將這些更改的條目新增到撤消列表中。當用戶請求撤消或重做時,使用者介面程式碼將呼叫文字類中的方法,然後該方法處理撤消列表中的條目。對於與文字相關的條目,它直接更新文字類的內部狀態。對於與其他事物(例如區域選擇)相關的條目,文字類反過來呼叫使用者介面程式碼來執行撤銷或重做。

Expand Down
2 changes: 1 addition & 1 deletion docs/zh-tw/ch14.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ int IndexletManager::getCount() {...}

以下是其他一些來自學生專案的名稱不夠精確的示例:

- 構建影象介面文字編輯器的專案使用名稱 `x``y` 來表示字元在檔案中的位置。這些名稱太籠統了。他們可能意味著很多事情。例如,它們也可能代表螢幕上字元的座標(以畫素為單位)。單獨看到名稱 `x` 的人不太可能會認為它是指字元在一行文字中的位置。如果使用諸如 `charIndex``lineIndex` 之類的名稱來反映程式碼實現的特定抽象,該程式碼將更加清晰。
- 構建影像介面文字編輯器的專案使用名稱 `x``y` 來表示字元在檔案中的位置。這些名稱太籠統了。他們可能意味著很多事情。例如,它們也可能代表螢幕上字元的座標(以畫素為單位)。單獨看到名稱 `x` 的人不太可能會認為它是指字元在一行文字中的位置。如果使用諸如 `charIndex``lineIndex` 之類的名稱來反映程式碼實現的特定抽象,該程式碼將更加清晰。

- 另一個編輯器專案包含以下程式碼:

Expand Down
2 changes: 1 addition & 1 deletion docs/zh-tw/preface.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

到現在,我已經教過 3 次軟體設計課程,並且本書是基於該課程中出現的設計原則編寫的。這些原則立足於比較高的層級,類似於哲學概念(比如“透過定義來規避錯誤”),因此學生很難以抽象的方式理解這些思想。透過編寫程式碼、犯錯誤、然後檢視他們的錯誤以及後續的修正與這些原則之間的關係,學生將學得最好。

在這一點上,您可能會想知道:是什麼讓我認為我知道有關軟體設計的所有答案?老實說,我並不知道。當我學會程式設計時,也沒有關於軟體設計的課程,而且從來沒有導師來教我設計原則。在我學習程式設計時,程式碼審查還不存在。我對軟體設計的想法來自於編寫和閱讀程式碼的個人經驗。在我的職業生涯中,我已經用多種語言編寫了大約 25 萬行程式碼。我曾在一些團隊中工作過,這些團隊從零開始建立了三個作業系統、多個檔案和儲存系統、基礎架構工具(例如偵錯程式、構建系統和影象介面工具包)、一種指令碼語言以及用於文字、圖形、簡報和積體電路的互動式編輯器。一路上,我親身經歷了大型系統的問題,並嘗試了各種設計技術。另外,我已經閱讀了很多其他人編寫的程式碼,這使我接觸到了很多方法,無論是好是壞。
在這一點上,您可能會想知道:是什麼讓我認為我知道有關軟體設計的所有答案?老實說,我並不知道。當我學會程式設計時,也沒有關於軟體設計的課程,而且從來沒有導師來教我設計原則。在我學習程式設計時,程式碼審查還不存在。我對軟體設計的想法來自於編寫和閱讀程式碼的個人經驗。在我的職業生涯中,我已經用多種語言編寫了大約 25 萬行程式碼。我曾在一些團隊中工作過,這些團隊從零開始建立了三個作業系統、多個檔案和儲存系統、基礎架構工具(例如偵錯程式、構建系統和影像介面工具包)、一種指令碼語言以及用於文字、圖形、簡報和積體電路的互動式編輯器。一路上,我親身經歷了大型系統的問題,並嘗試了各種設計技術。另外,我已經閱讀了很多其他人編寫的程式碼,這使我接觸到了很多方法,無論是好是壞。

從所有這些經驗中,我嘗試提取通用線索,包括需要避免的錯誤和使用的技巧。本書反映了我的經驗:這裡描述的每個問題都是我親身經歷的,每種建議的技術都是我在自己的編碼中成功使用過的。

Expand Down

0 comments on commit 3404863

Please sign in to comment.