isyumi_netブログ

isyumi_netがプログラミングのこととかを書くブログ

コマンド化して副作用を追い出そう

多くのプログラムにはこのような外の世界にデータを書き込む処理が登場します。 メール送信 DBに保存 ファイルに書き込み HTTPリクエストにレスポンス このような処理をここではIOと呼びます。IOが混じるコードのテストは複雑です。多くの場合実機確認するこ…

正規化した状態変数を展開する関数を作ろう

blog.isyumi.net 前回、状態を管理する変数は正規化しようという話をした。これは状態を管理するうえで役に立つ。しかし、その変数を使うときにめんどくさくなる。そこで、正規化した変数を非正規化する専用の関数を一つ作ろう。状態変数を正規化することと…

状態を管理する変数は正規化しよう

先日のブログで「あなたの書いたプログラムには状態を保持した変数がある。そこが散らかるとめんどくさいことになるのできちっと管理しよう」という話をした。 blog.isyumi.net おさらいだが、状態変数というのはサイクルをまたぐ変数だ。博士のメモだ。管理…

ifの判定式に名前をつけよう

今日紹介するテクニックは実に些細なことだ。しかし、この習慣は有意義だと思う。だから、是非あなたのプログラミングに取り入れてほしい。 if(***ここ***){ が長すぎると読みづらいから気をつけよう。 if(aaa == bbb) { } このくらいならたいしたことにはな…

状態を管理しよう

プログラムには実行中にどんどん書き換わっていく変数と、使い捨てにされる変数がある。イメージしてほしいのは博士の愛した数式だ。あなたは日中に考えたことはすべて記憶しているが、毎晩寝る度に全部忘れてしまうとする。しかし、机にメモがおいてあり寝…

早期ReturnでIF文の組み合わせを見やすくしよう

IF文の中を整理する簡単な方法を紹介しよう。 こういう仕様を考えてほしい。 お客さんがある商品を購入可能か判定したい。購入可能の条件として ログインしているか 在庫があるか 在庫がないなら再入荷可能か お金は足りているか があったとする。購入可能な…

RESTful APIのエンドポイントを綺麗に設計しよう

ブラウザやスマホアプリがサーバーとデータをやり取りする際にHTTPが使われることが多い。今回はそのURLの話だ。まずなんでこの話をするかを聞いてほしい。 あなたが参加しているシステムのサーバーとクライアントのやり取りは全部で何種類あるだろうか? ユ…

For文を縦に分割する

他人にこの話をすることはほとんどない。自転車置き場のそしりは免れ得ないとおもう。とはいえもしあなたがプログラミング初心者で、僕に何かアドバイスできることがあるならちょっと見ていってほしい。へぼプログラマーの僕があなたにあげられるものはこん…

純粋関数の割合を最大化しよう

不勉強な僕ですが、僕が知っているいくつかの小手先のテクニックをまとめておこうと思う。 誤解しないで欲しいが僕は他人にこの話をすることはほとんど無い。僕があなたの同僚になったとして、いちいち突っ込んでめんどくさい思いをさせることはない。 単に…

はてなブログに移行することにした。

ブログを移行した。 今日まで、手作りブログエンジンをFirebase上においていた。Cloud FunctionsでReactをSSRしていた。しかし、Cloud Functionsがあまりにも遅い。そこで脱出することにした。 別の側面もある。手作りブログエンジンでブログを書くと、ブロ…