検索して検索結果が空の場合はnullを返したりすると思うのですが、追加メソッドで追加に失敗した場合、どんな値を呼び出し元に返すと良いのでしょうか?
JavaScript
1 getNote(title) { 2 const notes = this._fetchNotes(); 3 const filteredNotes = notes.filter(note => note.title === title); 4 return filteredNotes.length > 0 ? filteredNotes[0] : null; 5 }
こちらの場合は、引数に与えられた文字列とマッチするオブジェクトが存在していたら最初のオブジェクトを返し、マッチしたものが見つからない場合はnullを返しています。
JavaScript
1 addNote(title, body) { 2 let notes = this._fetchNotes(); 3 const note = {title, body}; 4 5 const duplicatedNotes = notes.filter(note => note.title === title); 6 7 if (duplicatedNotes.length > 0) { return null; } 8 9 notes.push(note); 10 this.saveNotes(notes); 11 return note; 12 }
こちらの場合は追加に成功した場合は追加したオブジェクトを呼び出し元に返して、追加に失敗した場合は検索メソッドに合わせて、nullを返してみました。
呼び出し元の方では追加出来たかどうかのチェックをする処理を書いているので、追加に失敗した場合、何も返さない場合、呼び出し元の方でundefinedかどうかのチェックをするかたちになります。ただ、他のところでは、nullかどうかのチェックをしているので、一貫性をもたせるためにaddメソッドで失敗した場合もnullを返した方が良いのかななんて思ったりもしました。
追加失敗時にfalseを呼び出し元に返すのは、追加成功時にオブジェクトを返しているので違うのかなと思いました。追加成功時にtrueを返しているのであれば、追加失敗時にfalseを返すので良いとは思うのですが。
追加したものは何もなかったことを表すのにnullを使うのって適切でしょうか?
ちなみに、呼び出し元で、
if(note === null){処理}ではなく、
if(!note){処理}みたいに書くことも出来ますが、個人的には明確に書きたいので、ざっくりとした判定の書き方はしていません。
回答1件
あなたの回答
tips
プレビュー