<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Commit｜林鼎淵 Dean Lin</title>
    <link>https://deanlin.net/tags/commit/</link>
    <image><url>https://deanlin.net/images/author_hu_aa256fc934e9a932.jpg</url><title>Commit｜林鼎淵 Dean Lin</title><link>https://deanlin.net/tags/commit/</link><width>144</width><height>144</height></image>
    <description>林鼎淵（Dean Lin）的部落格：生成式 AI 企業內訓講師、外商資安公司軟體專家、7 本書作者。400 多篇文章用白話分享生成式 AI 實戰、Claude Code 與 Vibe Coding 教學、團隊合作與職場成長。</description>
    <generator>Hugo</generator>
    <language>zh-tw</language>
    <copyright>© 2020–2026 林鼎淵 Dean Lin</copyright>
    <lastBuildDate>Thu, 24 Feb 2022 13:50:10 +0800</lastBuildDate>
    <atom:link href="https://deanlin.net/tags/commit/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>讓開發團隊更好協作的方式 — 下班有約系列文</title>
      <link>https://deanlin.net/blog/202202/better-dev-team-collaboration/</link>
      <pubDate>Thu, 24 Feb 2022 13:50:10 +0800</pubDate>
      <guid>https://deanlin.net/blog/202202/better-dev-team-collaboration/</guid>
      <dc:creator>林鼎淵</dc:creator>
      <category>團隊合作</category>
      <description>前面兩篇文章分享了工程師容易卡住的問題、常犯的錯誤，而這篇文章會聚焦在「協作」這個部分，提供一些方法讓開發團隊發揮更穩定的效能。</description>
      <media:content url="https://deanlin.net/blog/202202/better-dev-team-collaboration/images/better-dev-team-collaboration-og_hu_5d8a0192ac47ec41.jpg" medium="image" type="image/jpeg" width="1200" height="675" />
      <content:encoded><![CDATA[<p>前面兩篇文章分享了工程師容易卡住的問題、常犯的錯誤，而這篇文章會聚焦在「協作」這個部分，提供一些方法讓開發團隊發揮更穩定的效能。</p>
<p><img src="https://deanlin.net/blog/202202/better-dev-team-collaboration/images/better-dev-team-collaboration-01.webp" width="1400" height="745" alt="讓開發團隊更好協作的方式 — 下班有約系列文（圖 1）" fetchpriority="high" decoding="async"></p>
<pre tabindex="0"><code>大綱
➤ 可以一起遵守的 Coding Style
➤ 使用相同的程式碼 Format 工具
➤ 沒有明確 Git Flow 機制會發生什麼事？
➤ 制定團隊 Git Flow 的規則
</code></pre><h2 id="-可以一起遵守的-coding-style">可以一起遵守的 Coding Style<a class="h-anchor" href="#-%e5%8f%af%e4%bb%a5%e4%b8%80%e8%b5%b7%e9%81%b5%e5%ae%88%e7%9a%84-coding-style" aria-label="這個段落的連結"></a></h2>
<p>即使是有經驗的工程師，在同一個專案中也很常不小心有多種命名的風格，下面列出幾個建議：</p>
<ul>
<li><strong>變數與函式：</strong>都用小駝峰式（camelCase）的命名，ex：downloadDoc、deleteDoc。</li>
<li><strong>常數命名：</strong>會建議使用全大寫英文命名，字詞間使用下底線（_）連接，ex：VUE_APP_ROOT_API。</li>
<li><strong>少用簡寫或自己發明縮寫：</strong>就算是本人，幾個月後也會忘記自己當時創造的東西。</li>
<li><strong>不要拼錯英文單字：</strong>當程式結構越來越大，我們會透過搜尋來找答案，如果你拼錯就會造成大家的困惑。</li>
<li><strong>字串單引號、雙引號統一：</strong>儘管在 JavaScript 中兩者皆可運行，但在閱讀體驗上就會有點不舒服。</li>
</ul>
<h2 id="-使用相同的程式碼-format-工具">使用相同的程式碼 Format 工具<a class="h-anchor" href="#-%e4%bd%bf%e7%94%a8%e7%9b%b8%e5%90%8c%e7%9a%84%e7%a8%8b%e5%bc%8f%e7%a2%bc-format-%e5%b7%a5%e5%85%b7" aria-label="這個段落的連結"></a></h2>
<p>其實上面的問題大部分可以透過「工具」來解決，但必須律定團隊使用「統一」的工具。</p>
<p>如果團隊沒有統一的工具，會導致你每次在更新專案時，明明只更新一行，但<strong>因為每個人 Format 工具不同導致在 Merge Branch 時看起來幾乎是重寫</strong>。</p>
<p>這邊推薦使用 VSCode Extensions 的 <a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode">Prettier</a>，他支援大部分程式語言的 Format；當然知名的 <a href="https://eslint.org/">ESLint</a> 也是團隊協作時的好選擇。</p>
<blockquote>
<p>不同 Format 工具的斷行字數、單引號、雙引號、結尾有沒有「;」…的習慣都不一樣，如果大家不統一，你看 diff 時會覺得很崩潰並且浪費時間。</p>
</blockquote>
<h2 id="-沒有明確-git-flow-機制會發生什麼事">沒有明確 Git Flow 機制會發生什麼事？<a class="h-anchor" href="#-%e6%b2%92%e6%9c%89%e6%98%8e%e7%a2%ba-git-flow-%e6%a9%9f%e5%88%b6%e6%9c%83%e7%99%bc%e7%94%9f%e4%bb%80%e9%ba%bc%e4%ba%8b" aria-label="這個段落的連結"></a></h2>
<p>如果沒有一套基礎簡單的規則，你可能會遇到以下障礙：</p>
<ul>
<li><strong>Deploy（部署）沒有基準</strong>：正式機、測試機要用哪個 Branch？如果每次都不一樣，那遲早都會出事。</li>
<li><strong>花很多時間在 Merge Branch（合併分支）上</strong>：如果不是從同一條 Branch 分支出去，那在 Merge 時很容易出現各種衝突需要解決。</li>
<li><strong>難以從 Branch 追蹤作業進度</strong>：有些人會只用一條 Branch 從頭做到尾，造成單純看這個分支無法理解他到底完成了哪些功能。</li>
<li><strong>無法理解的 commit 內容</strong>：每個人都有自己的 commit 風格，導致追溯歷史時很難找到節點。</li>
<li><strong>任務交接時的困擾</strong>：有些人沒有定期 push 的習慣，喜歡累積非常多的 commit 再一次 push；這樣如果他突然請假，或剛好在忙其他事情時，職務代理人並無法協助處理他的任務，甚至重工浪費時間。</li>
</ul>
<h2 id="-制定團隊-git-flow-的規則">制定團隊 Git Flow 的規則<a class="h-anchor" href="#-%e5%88%b6%e5%ae%9a%e5%9c%98%e9%9a%8a-git-flow-%e7%9a%84%e8%a6%8f%e5%89%87" aria-label="這個段落的連結"></a></h2>
<p>下面是筆者團隊在各個 Branch 的規則：</p>
<h3 class="h-nomark" id="-master">🏷️ Master<a class="h-anchor" href="#-master" aria-label="這個段落的連結"></a></h3>
<ul>
<li><strong>功能</strong>：部署到正式機的 branch</li>
<li><strong>Merge request</strong>：由資深工程師或是技術主管審核</li>
</ul>
<h3 class="h-nomark" id="-develop">🏷️ Develop<a class="h-anchor" href="#-develop" aria-label="這個段落的連結"></a></h3>
<ul>
<li><strong>功能</strong>：部署到測試機的 branch</li>
<li><strong>Merge request</strong>：由資深工程師或是技術主管審核</li>
</ul>
<h3 class="h-nomark" id="-feature">🏷️ Feature<a class="h-anchor" href="#-feature" aria-label="這個段落的連結"></a></h3>
<ul>
<li><strong>命名方式</strong>：依功能命名，如果有任務編號的話一同附上，方便日後追蹤</li>
<li><strong>基礎規則</strong>：原則上都是從 Develop 分支出去，每個 Feature 的功能盡量細分到可以在一天內完成</li>
</ul>
<h3 class="h-nomark" id="-hotfix">🏷️ Hotfix<a class="h-anchor" href="#-hotfix" aria-label="這個段落的連結"></a></h3>
<ul>
<li><strong>命名方式</strong>：依功能命名，如果有任務編號的話一同附上，方便日後追蹤</li>
<li><strong>基礎規則</strong>：原則上是為了解決正式機上面的緊急 Bug，因此通常是從 Master 分支出去；完成修改後再合併回 Master、Develop</li>
</ul>
<h3 class="h-nomark" id="-release">🏷️ Release<a class="h-anchor" href="#-release" aria-label="這個段落的連結"></a></h3>
<ul>
<li><strong>命名方式</strong>：依釋出的版本命名</li>
<li><strong>基礎規則</strong>：當有一個大版本準備部署到正式機，為了保證系統穩定性，會先從 Develop 分支 Release 的版本</li>
</ul>
<p>以及其他希望大家一起遵守的細節：</p>
<ul>
<li>完成 Feature 時要 push 一版，並通知協作夥伴確認功能。</li>
<li>如果該 Feature branch 已經 merge 回 develop，且不會再使用該 branch，就需要把它給 delete 掉，避免線上有太多分支，會不清楚哪一個才是有在作用的。</li>
<li>每天下班前至少要 push 一版，讓管理者容易掌握進度。</li>
<li>commit 可以用「新增功能、變更功能、修補 Bug」作為 title 的分類，然後將調整的內容條列式寫入 description，這樣其他人在 Code Review 時可以知道重點，範例如下：</li>
</ul>
<pre tabindex="0"><code>### title
修補 Bug：解決職員列表 issues
### description
1. 解決排序無效 bug
2. 在「異常」欄位增加是否為 null 的判斷，避免字串切割異常
3. 解決 pagination 參數沒有傳送到的問題
</code></pre><blockquote>
<p>筆者認為「簡單、易懂」為第一優先，中英文表達都可以。</p>
</blockquote>
<hr>
<blockquote class="pullquote"><p>相信還有很多可以讓開發團隊協作更愉快的工具與方法，期待大家的留言分享～</p>
</blockquote>
<p><strong>如果你對目前的職涯感到迷茫，想從不同視角檢視自己的選擇，相信《<a href="https://www.tenlong.com.tw/products/9786264142083">工程師下班有約</a>》這本書能為你帶來靈感與啟發：</strong></p>
<figure class="figure"><img src="https://deanlin.net/blog/202202/better-dev-team-collaboration/images/better-dev-team-collaboration-02.webp" width="1400" height="319" alt="林鼎淵著作《工程師下班有約：企業內訓講師帶你認清職涯真相！》" loading="lazy" decoding="async">
  <figcaption><a href="https://www.tenlong.com.tw/products/9786264142083">https://www.tenlong.com.tw/products/9786264142083</a></figcaption>
</figure>

<pre tabindex="0"><code>下班有約系列文
▋ [前端]新手工程師容易卡住的問題
▋ [前端＆後端]工程師常犯的錯誤
▋ 讓開發團隊更好協作的方式(本篇)
▋ 談談 Pair Programing
▋ 談談工程師的話語權
▋ 出社會後，新鮮人要及早知道的 5 件事
▋ 面試的性向測驗竟然準到讓人心裡發寒？
▋ 反其道而行的任務分配
▋ 現在的 Daily Scrum 真的適合團隊嗎？
▋ 用低成本也能請到好員工？資深 HR 不想告訴你的秘密！
</code></pre>]]></content:encoded>
    </item>
  </channel>
</rss>
