---
# System prepended metadata

title: J_q6~q10 Code Review
tags: [CodeReview]

---

# q6~q10 Code Review
## Code Review by Pam
* regex正規表達式太方便先不用，試試看土炮判斷（判斷字元代碼之類的）
* 驗證時的使用者體驗，讓使用者知道輸入的為什麼錯，可能英文名中不小心打到數字，就提示字元中不能有數字
* array method中的function常用arrow function
### q6
* 雖然題目只求第一跟第三，但考慮可能改取不一樣項目，可以寫一個 array 放目標的 index，再透過 array 去取得
* 每個獨立 function 的 return 值可以寫更清楚，例如我寫`return newArray`，可以改成`oddLetterArray`之類的
* `askQuestion`這個函式可以單純一點，只問問題且得到`answers`，再透過呼叫`q6Module`把`answers`傳進去得到結果
* `answers`也可以不用是`askQuestion`的參數，直接在函式裡宣告後`return`出去
* `callBackFn`的命名可以更明確，例如：`doSomeToAnswers`
* `q6Module`的命名，可以是`getOddLetter`之類的
### q7
* 我寫的`printArrayToString`其實不是印出，所以名稱要改一下
* 我的`rotateString90Degrees`太大包，可以拆一些步驟出來，閱讀上比較容易
* verify做測試，這樣題目的`module`就可以考慮不測驗證
* 轉數字除了`Number()`也可以用運算子強制轉型`+"1"`
### q8
* ``[number.toFixed(3).length - 2]]``這串可以寫個變數裝
### q9
* `for`迴圈可以改成array method，寫迴圈時要動腦思考`i`的範圍，可以把心思放在更重要的邏輯
### q10
* Pam 寫了`class`建構函式我的媽呀，他說他是當練習，我直接傻眼
## Code Review by 鵬化
### common
* 程式碼空格與縮排的問題，用Prettier解決了
* 檔案格式的設計，盡量有個原則規範，我的有些有module有些沒有
* 寫code時注意一些縮排跟換行時機，讓程式碼更好閱讀
* 想像寫code是寫文章，要有段落設計，利用空行來區分不同邏輯行為
* readline共用問題，設計上將readline設計得更模組化，讓每一題可以輕鬆共享，維護上也比較方便
### q6
* 變數命名，`name`是陣列，叫做`name`容易搞混，例如改成`names`
### q9
* 鵬化說如果硬要講，就是將這題設計成不只合併兩個陣列

## Code Review by Chris
### common
* 測試時要測garbage in，把使用者當智障會亂輸入
* `++i`與`i++`的差別及使用時機、執行順序
* 測試的目的是展現功能
* random測試要再研究，目前是自己模擬了假變數
* 一定要測題目（我轉圖形那題沒有測愛心）
### q6
* try...catch還有最後finally，將try跟catch都會執行的放進去，也要探討finally的特性
* 盡量減少`rl.close()`使用次數
* goalIndexArray命名，可改成target...
### q7
* for迴圈中的條件邏輯需維持原狀，需要時可以直接無痛轉換成map形式
* 原本轉陣列使用了`map`，Chris認為不太像`map`，所以改用`forEach`（講仔細一點就是map通常會對每個元素做事情後`return`，但我的行為是根據每個元素去賦值給另一個陣列）