ネーミング

よいネーミングを見つけることは、最重要なことであり、難関な作業でもあります。
とくにPolylithでは、ネーミングに対するセンスが常に要求されます。ここでは component / base / deployable project のネーミングについてまとめて見ます。

Component

もし component が一つのことを行う場合、その機能に基づいて名前をつけてください。

  • validator
  • invoicer
  • purchaser

概念や名詞を中心として考えることができる場合は、その名詞を使うことも考えられます。この場合、上記の例とは違い、component が複数の機能を持つときの代替案にもなり得ます。

  • account
  • car

サードパーティAPIへのアクセスが主な責務の場合は、-api をつけることを検討してください。

  • stripe-api
  • open-weathermap-api

AWS といった有名なサービスを使う場合は、-api よりも、サービス名もしくはクラウド名-サービス名のようにグループ化したネーミングを検討してください。グループ化は infodeps コマンドの出力に適しているのでおすすめです。

  • s3 / aws-s3
  • dynamodb / aws-dynamodb

同じ interface を使用する2つの component がある場合、
例えば一つはビジネスロジック担当で、もう一つは受け取ったリクエストなどをビジネスロジックへ引き渡す(移譲)コンポネントがある場合、

  • interface 名: invoicer
  • ビジネスロジック component 名:invoicer
  • ビジネスロジックへ移譲する component 名 : invoicer-remote

といったネーミングを検討してみてください。

Base

Baseの仕事は、Public APIの公開と、受信したリクエスト等を component へ移譲することです。APIのタイプとその機能に基づいてネーミングすることをおすすめします。

  • 請求処理を行うREST APIの場合 : invoicer-rest-api
  • 様々なレポートを生成するラムダ関数の場合:report-generator-lambda

Deployable project

Deployable project の役割は、デプロイ可能な Artifact を作ることです。
よってその機能に基づいた名前をつけることを検討してください。多くのことを行う可能性が高いのでより一般性をもたせた名前がよいことが多いようです。

  • invoicer
  • report-generator

参照

Naming — polylith/clj-poly 0.2.19