2022-01-01から1年間の記事一覧

Rustの self, &self, &mut self の意味が分からなかったのでメモ

最近流行りのRust. システムよりのことを理解するのにGoよりは自分にあってそうと思い、たまに触ってます。 まだ基本的な文法が分からずメソッド引数の self, &self, &mut self の違いが分からなかったのでメモ。 fn method(self) ・・・ fn method(self: Se…

TypeScriptでも値オブジェクトが書きたい

普段Scalaを書いていますが、業務ではTypeScriptもフロントエンドで利用されています。※私はCSSが非常に苦手なのでほとんどフロントを触らないのですが。 バックエンドAPIは業務的なロジックに集中できて、DDD的な実装パターンなども適用しやすく結構綺麗に…

【Scala】type-safe builder パターンを応用して、保存前にバリデーションが必須であることを示す

ADTを利用して状態を表現し、事前条件として使うような実装を type-safe builer を参考に考えました。理想ではない、けど数ある制約の中でベターを目指した結果です。

多分木をフラットにする, Scala

以前メモ的に書いたこれ、少し使い勝手が悪いのと、この手の処理はぱっと書けないのでメモする。 tchiba.hatenablog.jp Node trait 上の記事で作った、単純な多分木をフラットにする処理を拡張してみた。 import scala.annotation.tailrec trait Node[A <: Node[_]]{ val children: List[A] protected def flatChildren[B](z: B)(f: A => B):</:>…

集約とクラス不変表明

集約 DDDには集約という概念があります。これが本当に難しくて、どうモデリングしてあげるべきなのかが掴めないでいました。しばらくDDDを実践していくなかで、 バートランド・メイヤーのオブジェクト指向入門(通称OOSC)の契約による設計の章を読み返して…