現在、私はClean Codeで現在読んでおり、それぞれが独自の「ストーリー」を伝える超小型関数のアイデアが本当に好きです。私はまた、 "TO段落"という言葉でコードをどのように書かなければならないのか、頭の中で一種の名前を "to to"にすることを決めたのが本当に好きです。可読性のためにファンクション内にヘルパー関数をネストする
とにかくより多くの意味のある名前を含むようにコードをリファクタリングし、それを少し読んでいく流れを作り、私は私が確信している何かに遭遇しました。
私は、コードスタイルは非常に議論の余地があり、主観的な話題ですが、うまくいけば、私はこの投稿でうまくいきません。
ありがとうございました!
PSA:現時点ではインターンシップの内部プロジェクトにMEANスタックを使用しているWebアプリケーションを作成しています。
クリーンコードのリファクタリング
//Modal Controller stuff above. vm.task is an instance variable
vm.task = vm.data.task;
castTaskDataTypesForForm();
function castTaskDataTypesForForm() {
castPriorityToInt();
castReminderInHoursToInt();
castDueDateToDate();
getAssigneObjFromAssigneeString();
}
function castPriorityToInt() {
vm.task.priority = vm.task.priority === undefined ?
0 : parseInt(vm.task.priority);
}
function castReminderInHoursToInt() {
vm.task.reminderInHours = vm.task.reminderInHours === undefined ?
0 : parseInt(vm.task.reminderInHours);
}
function castDueDateToDate() {
vm.task.dueDate = new Date(vm.task.dueDate);
}
function getAssigneObjFromAssigneeString() {
vm.task.assignee = getUserFromId(vm.task.assignee);
}
おそらくより良いリファクタリング? /私の質問----------------------------
//Modal Controller stuff above. vm.task is an instance variable
vm.task = vm.data.task;
castTaskDataTypesForForm();
function castTaskDataTypesForForm() {
castPriorityToInt();
castReminderInHoursToInt();
castDueDateToDate();
getAssigneObjFromAssigneeString();
function castPriorityToInt() {
vm.task.priority = vm.task.priority === undefined ?
0 : parseInt(vm.task.priority);
}
function castReminderInHoursToInt() {
vm.task.reminderInHours = vm.task.reminderInHours === undefined ?
0 : parseInt(vm.task.reminderInHours);
}
function castDueDateToDate() {
vm.task.dueDate = new Date(vm.task.dueDate);
}
function getAssigneObjFromAssigneeString() {
vm.task.assignee = getUserFromId(vm.task.assignee);
}
}
メイン関数が呼び出されるたびに再作成されるので、関数内でヘルパーを定義しない方がよいでしょう。アーキテクチャに応じて、最初の例と同じスコープで非表示にします。または、IIFEを使用して、その周囲にクロージャを作成して、ヘルパーをプライベートにすることができます。または、メイン関数を含むモジュールのプロトタイプに置きます(存在する場合)。残りのコードの構造を知らなければ、私はIIFEのために行きます。 – Shilly
素晴らしい、私に調べる何かを与えてくれてありがとう! IIFEのことを聞いたことはありません。彼らに私のために何があるのかを見てみましょう。 また、これが使用されている方法とそれのアーキテクチャのために、これは一度だけ呼び出せます。だから彼らが再現されている限り、それは問題ではありません。 – Michael
@ Shillyあなたが必要な場合は、これを回答として投稿し、私はそれを受け入れます。 – Michael