ネーミング
よいネーミングを見つけることは、最重要なことであり、難関な作業でもあります。
とくにPolylithでは、ネーミングに対するセンスが常に要求されます。ここでは component / base / deployable project のネーミングについてまとめて見ます。
Component
もし component が一つのことを行う場合、その機能に基づいて名前をつけてください。
validator
invoicer
purchaser
概念や名詞を中心として考えることができる場合は、その名詞を使うことも考えられます。この場合、上記の例とは違い、component が複数の機能を持つときの代替案にもなり得ます。
account
car
サードパーティAPIへのアクセスが主な責務の場合は、-api
をつけることを検討してください。
stripe-api
open-weathermap-api
AWS といった有名なサービスを使う場合は、-api
よりも、サービス名
もしくはクラウド名-サービス名
のようにグループ化したネーミングを検討してください。グループ化は info
や deps
コマンドの出力に適しているのでおすすめです。
-
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