重構:改善 .NET 與 C# 應用程式的設計,償還欠下的技術債-審校序

重構:改善 .NET 與 C# 應用程式的設計,償還欠下的技術債-審校序

2023年12月,正忙於年末最後一場iThome - Kubernetes Summit 2023的演講,心想,忙完這一場終於可以好好休息一下。但事情永遠不是傻子所想的那麼簡單。突然,信箱進來一封編輯邀約的信件,正想說,如果是翻譯工作,就再幫忙找其他新鮮的肝(新譯者),結果是翻譯也不是翻譯。出版社嘗試用了ChatGPT進行初譯,然後由專業編輯與譯者進行修潤與審校,想嘗試這樣的合作模式。快速瀏覽了主題與內容,我非常有興趣,立即回信說,我想接下這份工作。

如果你是看到「.NET、C#、重構」關鍵字翻開此書的讀者,我只能說,這本書非常實用。作者雖然會提及一些架構設計上的專有名詞,例如SOLID、DRY、KISS等原則,但和一般談及重構書籍不同,他採用更多的範例教學,用一個淺顯易懂,並帶上地表最強Visual Studio的實際操作,讓我們在彈指之間完成重構這件事。對於專有名稱反而只是淡淡的帶過,先把功夫學起來比較重要。

提到Visual Studio不得不誇一下作者,原本以為我已經很熟Visual Studio,但看完此書才知道,Visual Studio提供的重構功能原來如此強大與完善並且易用。書上所提到的Visual Studio重構功能,不跨張,我只知道30%左右,原來還有其他那麼多好用的重構功能。舉例來說,我們或多或少都看過「if波動拳」這種技術債,它能動,它運作良好,但沒人想動它!利用書中Visual Studio重構功能,很容易就可以消除這筆「人見人怕」的技術債。

有強大的開發工具,那麼C#就是軍火庫。C#現在是個進化極快的程式開發語言,每年一版的更新不斷推陳出新,這些C#新功能成為你重構路上的軍火庫的各種新型武器。有些是讓程式碼更短、有些是更易讀、更不高容錯性,讓開發人者減少犯錯可能性,例如導入Nullable也可以視為一種重構,讓開發者在面對Null能有更多的選擇路徑,作者針對遺留程式碼在升級(重構)C#的過程,進行許多務實的討論。

會寫程式的人很多,但就審校者在課程或顧問的經驗來看,有寫或會寫測試的比例實在低的可怕。重構是件需要防護罩的工作,而測試,尤其是單元測試,就是它的防護罩。沒有測試的保護,重構會是件可怕的工作。書中所有的範例都有對應的單元測試,不論是已寫好的,或者是作者帶著讀者動手補上,這都是提升測試技能很好的練習場。曾經有人問過我,如何區分資淺跟資深開發人員?以技術能力而言,我會把測試當成其中一項評估指標。

一般經典重構書籍,片段性比較強,一個主題,一個片段討論加上一個片段程式碼。想要找一個完整且能練習的案例比較不容易。作者虛擬一家航空公司來進行討論,從第1章讀到最後第17章,故事線很完整,在審校過程,整本書的所有範例我完整跟著做了二次。基本上,除了一點點小注意事項之外(都有加上審校註),都能很順利跟著書的節奏來完成。練習是學習「重構技能」中很重要的一部分,練手感、練察覺味道,練工具的重構功能,並且透過Git的幫忙,能隨時還原專案來重新練習。這對想加強重構實力的人尤其重要,練習、練習、再練習。

這是本.NET資淺到資深開發人員都受益的書。程式開發沒人不需要重構,而重構並不一定需要很多高深的理論才能進行,只要你學好本書的精髓,沒有Visual Studio一樣可以重構,只是有工具的幫忙可以起到加分效果,這是我在審校這本書時很深的體悟。如果你是三年以上開發人員,經常受限於「環境」,想重構而無法重構,我蠻建議可以先從Part 4開始讀。了解如何有技巧的溝通,這是我經常在開發人員身上看到缺少的東西。很多工作的順利與否,很多時候並不是在於技術層面,而是向上溝通的能力,而Part 4的內容,是很少數提及如何與上層溝通技術問題的內容。

回到最前面ChatGPT初譯這件事,整體而言,初譯我給個60分吧,誤譯、錯譯、簡體詞、簡體文都有出現過初譯稿中。第一回審校稿子時,也是必須在「原文與初譯稿」之間一字一行的對照,後續我和編輯兩個的人工審校和修飾文字也是花費不少時間與精神。也就是說,很多工作不是有了ChatGPT之類的工具之後就能省略,所以這類工具稱為「AI助理」,而不是AI工程師、AI譯者,它還只是個工具,它無法幫你讀書、幫你練習,但它能陪你讀書、陪你練習。

最後感謝編輯國鳳的邀約,給我帶來一個不同於譯者的工作體驗,跟妳合作非常愉快。感謝Joey Chen(91)的支援,遠在日本渡假,還接受我的打擾,諮詢重構相關問題,光是幾句話功夫就能抓到這本書的精髓,給出很好的方向,為讀者們謝謝你。感謝我的家人,為了此書,連個假期都沒法好好為妳們安排,每分每秒都是你們的體諒,這是我努力的動力。

購買:天瓏網路書店

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。