---
# System prepended metadata

title: Refactoring notes

---

# Refactoring notes

- 現在不面對，以後要花成倍的時間面對
- no duplication
- 小塊
- 變數名稱長短要和作用域範圍相對；作用域越大，變數最好長一些。




## for Morton

NICE:
- 有妥善使用_變數 e.g. _source
- method的長度控制得很好、有注意單一功能性。
- 

ISSUE:
- 以socket_handler.js, contact.js為例:
可以再考慮變數風格的問題: camelCase, snake_style

- firm/organization指稱的概念是一樣的。
- typo: eamil
- 有些參數可以考慮拉出來用大寫宣告 e.g. message.js的
```javascript=
body: {
      size: 5,

offset: '7d',
scale: '25d',
decay: 0.2,
```
- 以下變數可以考慮...
```javascript=
  unreadMessages.forEach(msg => {
    if (!(msg._source.group_id in unreadMessagesCount))
      unreadMessagesCount[msg._source.group_id] = 1;
    else unreadMessagesCount[msg._source.group_id]++;
  });
```

```javascript=
  unreadMessages.forEach(msg => {
      const gid = msg._source.group_id;
    if (!(gid in unreadMessagesCount))
      unreadMessagesCount[gid] = 1;
    else unreadMessagesCount[gid]++;
  });

```



## for Domingo
NICE:
- 有做到抽象化e.g. Cache
- 

ISSUE
./socket.js:
```javascript=
// ! undefined is true
// 0 is true
// "" is also true
if (socket.user.id === -1 || !projectObject.versionID || !projectObject.projectID) {...
```
```javascript=
// killObject只是包含kill:true/false, 感覺不一定需要包成object. userObject同。
const [killObject, userObject] = await editVersion
```

./socket/editor.js:
editVersion可以考慮再做切分
editVersion, versionEditStatus的命名可以統一看看。

editVersion