如何算是跑敏捷

這周在公司遇到Yves,他順便幫忙解惑了一下:
只要符合四大宣言,就是跑敏捷。
不過跑敏捷不等於跑scrum,跑scrum就要照它的flow走,沒有照著走的話,就是scrum, but…

敏捷不等於用新的技術,但敏捷代表持續學習(它的精神有)所以如果新的技術用了對軟體是有加分的話,就是可以導入的。(反應變化、符合市場需求)
refactor不等於rewrite,rewrite重寫程式之後,可能出現一堆舊的bug,以後又變成可能只有rewrite的人能維護,所以應該用完整自動化測試來包覆,再做refactor。(有了測試,保證改了不會出問題)

另外我還問了一個團隊有很多個專案,每個人負責不同專案的話怎麼跑敏捷?
他說可以用XP方式,分小組互相慢慢學習,讓不會做這個工作的人後來也會,不是說像我不會前端,學好了後端再去參與,而是直接去參與,一邊做一邊學。
時程壓太緊之類的是PO去負責協調的。

Jest 配置

在import css檔案的時候會有問題,這時候可以:
加一個styleMock.js檔案,把css都變成空物件


styleMock.js

module.exports = {};

加了之後在 jest.config.js 裡面對應這個檔案

module.exports = {
  setupFilesAfterEnv: ['<rootDir>/src/setUpTests.js'],
  moduleNameMapper: {
    '\\.(css)$': ['<rootDir>/src/mocks/styleMock.js'],
  },
};

Array方法選用

const words = [{...}, {...},{...},{...},{...},{...}];

這時候想要取出其中一個物件,要用什麼方法呢?
如果使用filter,可能會變這樣
[{...}, {...}]
回傳的還是陣列,要取它裡面的值,需要這樣
words[0].value
no實在是敲級麻煩。非常的不直覺。那要用什麼勒?
這時候改用find,就直覺很多

const array1 = [{name: 'luna'}, {name: 'cura'}];
const found = array1.find(element => element.name === 'luna');

回傳結果:
> Object { name: "luna" }
這樣就會回傳物件了😭
所以如果只想要取一個物件的話,不要耍笨用filter,要用find

Async/Await

因為JavaScript是non-blocking,例如去買電影票排隊,排到跟剪票的人說:「欸,我沒帶票,我老婆要過來了,可以等我嗎?」剪票的人說:「不行,你後面還有一排人欸,你先站邊邊,等老婆來了再排啦。」這就是JavaScript的運作方式。

If something needs to wait, it will make you wait on the side.

Good code || Bad code

看了這篇,大致重點如下:

const fatLuna = { kg: 999, test: true };
const ano = { kg: 7, style: "flurry" };

要console.log的時候,
bad code:

console.log(fatLuna);
console.log(ano);

直接把變數印出來
Good code:

console.log(fatLuna, ano)