『リーダブルコード』を学習する8

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

序文

リーダブルコード学習8日目。
N予備校の中の人に見つかった気がするが、気づかなかったことにする。

Twitterをはじめたようです。(新しいアカウントで)

twitter.com

フォローしていただけると喜びます。
旧アカウントフォローしていただいた方すいません。

GitHub

github.com

進捗

  • 11章 一度に1つのことを
    (学習時間:3時間)

コード実装部分(一部)

  • 複数のタスクを整理する

\CodeExample\11章 一度に1つのことを\11-2 オブジェクトから値を抽出する\location-info.js

// なんか汚い
const place = locationInfo["LocalityName"]; // 例:"Santa Monica"
if (!place) {
  place = locationInfo["SubAdministrativeAreaName"]; // 例:"Los Angeles"
}
if (!place) {
  place = locationInfo["AdministrativeAreaName"]; // 例:"California"
}
if (!place) {
  place = "Middle-of-Nowhere";
}
if (locationInfo["CountryName"]) {
  place += ", " + locationInfo["CountryName"]; // 例:"USA"
} else {
  place += ", Planet Earth";
}
return place;

/*******************
 改善例
********************/
// 同種のタスクを1箇所にまとめる

// locationInfoから値を抽出する
const town = locationInfo["LocalityName"]; // 例:"Santa Monica"
const city = locationInfo["SubAdministrativeAreaName"]; // 例:"Los Angeles"
const state = locationInfo["AdministrativeAreaName"]; // 例:"California"
const country = locationInfo["CountryName"]; // 例:"USA"

// 「都市」の優先順位を調べる
let secondHalf = "Planet Earth";
if (country) {
  secondHalf = country;
}
if (state && country === "USA") {
  secondHalf = state;
}

// 「国」の優先順位を調べる
let firstHalf = "Middle-of-Nowhere";
if (state && country !== "USA") {
  firstHalf = state;
}
if (city) {
  firstHalf = city;
}
if (town) {
  firstHalf = town;
}

// かっこいい書き方
const town = locationInfo["LocalityName"]; // 例:"Santa Monica"
const city = locationInfo["SubAdministrativeAreaName"]; // 例:"Los Angeles"
const state = locationInfo["AdministrativeAreaName"]; // 例:"California"
const country = locationInfo["CountryName"]; // 例:"USA"

const firstHalf, secondHalf;

if (country === "USA") {
  firstHalf = town || city || "Middle-of-Nowhere";
  secondHalf = state || "USA";
} else {
  firstHalf = town || city || state || "Middle-of-Nowhere";
  secondHalf = country || "Planet Earth";
}
  • その他実装部分

github.com

実行結果

ねえよ

感想

今日取り組んだ11章のタイトルは「一度に1つのことを」。

単純に「ひとつの関数で複数の処理をさせないようにしましょう」って話なのかと思ったら、それだけにとどまらず「似たような処理を同じ場所に集中させましょう」という内容も含まれていて、これはなるほどなと思うところがあった。

というか、例みたいにコードは結構書いてるような気がするなー。

今度、同じようなコードを書いた時に、今日の内容を思い出せるように。

カロリーメイトください。

BGM

だいたいかんちがい / リアル3区

www.youtube.com