Developer Experience Development
前言大家好,我是通訊 App「LINE」Android 團隊的石川。本簡報是 “關於程式碼可讀性之簡報介紹 ” 不定期連載的第四篇。上一篇簡報在這裡。本次將解說第六章與第七章,型態與型態的「相依關係」。在設計與撰寫程式時,型態之間的相依關係是無可避免的問題。例如,繼承某個型態、把實體當作參數或作為返回值使用,或者是呼叫函式時,對該型態的相依關係就會產生。但若毫無計畫地製造相依關係,將會損及可讀性與強健性。以下將從耦合度、方向、重複、明示性四個觀點來解說如何處理相依關係。耦合度 耦合度是相依關係強度的指標。這裡我們介紹應特別避免或減少的三種強度耦合:內容耦合、共用耦合、控制耦合。關於各種耦合的詳細解決方法,請參照簡報資料。 1. 內容耦合 (content coupling)內容耦合是指直接相依耦合對象的內部實裝內容。可以舉出的其中一個極端例子是從外部直接跳到某個 procedure 的特定標籤。在近代的程式語言中,大多是透過限制跳躍方法,使這種內容耦合難以產生。但是若編寫了相依於某個物件的內部狀態的程式碼,就會變成與內容耦合同等的強耦合。這裡舉一個存在不當狀態的設計案例。首
前言大家好,我是通訊 App「LINE」Android 團隊的石川,本文是「程式碼可讀性介紹」系列連載的第三篇,介紹本系列的第四章與第五章:「狀態」與「程序」原則。 本系列的上一篇文章為:程式碼可讀性介紹 vol. 2 : “命名與註釋” 篇 第四章:狀態開發者有時可藉由減少程式中不同狀態的數量,以及狀態改變的次數,讓程式整體變得更容易理解,特別是針對「不正確的狀態」與「不正確的狀態改變」。藉由將其排除,能讓可讀性大幅提升,也讓程式更為可靠。但須注意,減少狀態只是提升可讀性與強健性的方法,不可將其本身作為目標。本文將針對「減少不正確狀態」與「使狀態改變單純化」這兩點進行解說,以提升程式的可讀性與可靠度。1. 減少不正確狀態在此,先介紹「orthogonal / non-orthogonal 關係」的概念,作為兩個變數間的關係:兩個變數中,其中一個變數的數值範圍,不因另一變數的改變而被影響時,兩個變數間的關係為 orthogonal。相反地,當其中一個變數的數值範圍,會受到另一個變數影響時,則兩個變數間的關係為 non-orthogonal。例如:userId 與 layoutVisib
前言大家好,我是通訊 App「LINE」Android 團隊的石川,本文是「程式碼可讀性介紹」系列連載的第二篇,介紹本系列的第二章與第三章:於程式中撰寫的自然語言「命名」與「註釋」原則。本系列的上一篇文章為程式碼可讀性介紹 vol. 1 : “導入與原則” 篇。第二章:命名撰寫程式時,需要為 class 與 resource 等命名。命名的名稱若符合正確、明確、易於描述等條件,程式碼將變得更為易讀。本文針對什麼樣的命名可讓程式碼容易閱讀,把焦點特別放在 type (class、interface、trait 等)、value (變數、欄位、參數等),以及 procedure (function、method、subroutine 等),進行解說。但本文所解說的內容僅為一般原則,如果命名規則已經針對使用語言、平台或專案而規定,則請優先以該規定為準。此處列舉下列三項命名重點:名稱表達的內容文法詞彙的選擇1. 名稱表達的內容名稱應能表達命名對象 (type、value、procedure) 「是什麼 / 做什麼」,換言之,名稱不需要表達命名對象什麼時候使用 / 在哪裡使用 / 如何使用 /
前言大家好,我是通訊 App「LINE」Android 團隊的石川,前陣子發表了關於程式碼可讀性的簡介 (https://speakerdeck.com/munetoshi/code-readability)。今後我將不定期在此部落格上,逐一連載關於此簡報的短篇解說,本次要先解說此簡報的概要,以及第一個章節 “導入與原則”。關於本簡報本簡報為提升程式碼可讀性用的方法總整理,由以下 8 個章節構成:導入與原則:高可讀性程式碼的重要性、程式開發原則命名:名稱呈現的內容、文法與用語的選擇註解:文件、行內註解狀態:管理狀態變動、刪除無用狀態程序:函數與方法流程的明示化與分離依賴關係 I:兩種類型間的依賴關係強度依賴關係 II:依賴關係的方向、重複、明示性審查:委託審查程式碼、審查註解將所有章節整合後,總份量竟然超過 700 頁。而製作如此龐大簡介的原因,在於我隸屬的通訊 App「LINE」之 Android 開發團隊,希望將其打造成 “更能夠持續研發之環境”。LINE 自 2011 年開始研發以來,為了提供更好的使用者體驗,不斷開發與改善功能至今。隨著專案不斷成長,Android 用