あなたのクラスをよく命名闘争?
6639 ワード
今まで自分の頭の傷を見つけるときに、その新しいクラスの名前を疑問に思いますか?
我々は、これですべての闘争!
事実、it's one of the two hardest parts of programming!
あなたが心の中で明確なビジネスコンセプトを持っているので、時にはそれは簡単です.
他の回は、必ずしもビジネスコンセプトに関連付けられていないクラスを作成することがあります.
クラスをいくつかのクラス(保守性のために)に分割することを決定するかもしれません.
または、デザインパターンを使用する必要があります.
🤦♂️
ヒントを救出する!
できるだけ具体的にしてください! 最初は冗長であることを恐れるな.後でリファクタできます. あなたのビジネスプロセスを非プログラマに説明する記事のアウトラインを記述していることを前提にしてみてください.これからの条件で物事を命名して起動します.
ここでは、チップ1のチップを使用したサンプルは次のようになります.
この説明を使用して名詞からいくつかのクラスを作成できます.場合によっては、コードを整理する方法に応じて、それはあまりにも形容詞を使用して非常に価値がある! 名詞/用語がすべて特定の文脈に適用可能であることに留意してくださいbounded contexts from DDD ) あなたは解決しようとしている.
最初に渡したコードは次のようになります.
私たちが明示的に遷移をモデル化することに注意してください このようなクロスカッティングオブジェクトを導入しました シナリオ全体は、新しいクラスとして意味のある名詞によってキャプチャされます!
もちろん、これは事実の後にリファクタリングすることができます.しかし、最初のパスとして、このテクニックは本当に物事の名前とどのように相互作用する必要があります固化することができます. 冗長であることは、実際によく働きます! 疑似コードを使用して、より多くのヒントについては、この偉大な記事をチェックアウト:
いくつかのガイドライン
また、私のウェブサイトで私を見つけることができますwww.jamesmichaelhickey.com .
あなたのソフトウェア開発経歴会報を動かすこと
我々は、これですべての闘争!
事実、it's one of the two hardest parts of programming!
あなたが心の中で明確なビジネスコンセプトを持っているので、時にはそれは簡単です.
他の回は、必ずしもビジネスコンセプトに関連付けられていないクラスを作成することがあります.
クラスをいくつかのクラス(保守性のために)に分割することを決定するかもしれません.
または、デザインパターンを使用する必要があります.
🤦♂️
ヒントを救出する!
通常、コードを書くのは、解決しようとしている特定のシナリオを含んでいます.これらの種類のビジネスシナリオに取り組むためのいくつかのヒントもあります.
例
ここでは、チップ1のチップを使用したサンプルは次のようになります.
Once an order is submitted by the customer, we need to make sure that all the order's items are in stock. If some are not in stock, then we need to send them an email to let them know what items are on back-order.
Next, we will pass the information to the shipping department for further handling.
この説明を使用して名詞からいくつかのクラスを作成できます.場合によっては、コードを整理する方法に応じて、それはあまりにも形容詞を使用して非常に価値がある!
Order
or SubmittedOrder
Customer
or OrderCustomer
OrderItems
OrderItemsOnBackOrderEmail
ShippingDepartmentOrderHandler
最初に渡したコードは次のようになります.
class OrderSubmittedHandler {
public async handle(order: Order, customer: Customer) {
const submitted: SubmittedOrder = order.submitOrder();
if(submitted.hasItemsOnBackOrder()) {
const mail = new OrderItemsOnBackOrder(submitted);
mail.sendTo(customer);
await this._mailer.send(mail);
}
const shipping = new ShippingDepartmentOrderHandler(submitted);
await shipping.sendOrderInfo();
}
}
興味のポイントOrder
にSubmittedOrder
. 以来SubmittedOrder
は、Order
, これはあなたのクラスの方法を小さくし、管理することによってSingle Responsibility Principle . _mailer
変数.この例では、依存性注入を使用してMailer
. しかし、それはあなたが後にリファクタリングすることを決める何かでありえます.もちろん、これは事実の後にリファクタリングすることができます.しかし、最初のパスとして、このテクニックは本当に物事の名前とどのように相互作用する必要があります固化することができます.
過去のチュートリアル
アリスピッタ・ 5月7日・ 5分読む
#beginners
#problemsolving
#movingpasttutorials
#programming
いくつかのガイドライン
ビジネスシナリオから明らかでないかもしれないか、明白でないかもしれないクラスの特定の種類に対処するとき、あなたを助けるかもしれない若干のガイドラインは、ここにあります.
たとえば、デザインパターンを導入する必要があります.あなたのクラスの名前は?
意図
フォーミュラ
例
認可Can{Entity}{Action}
CanAdminViewThisPage
, CanManagerUpdateUserInfo
検証Is{Target}{State}{Test}
IsAddressUpdateAllowed
, IsUserCreationValid
インターフェースICan{Action}
ICanSendMail
, ICanBeValidated
コンクリート事業コンセプト
「何?」(名詞+形容詞)Student
, EmployeeUserProfile
, ShippingAddress
ユースケース{Action}{Target}
ApproveOrder
, SendWelcomeEmail
デザインパターン{Name}{Pattern}
IShippingAddressStrategy
, HomeAddressStrategy
, TemporaryAddressStrategy
連絡を取り合う
忘れないでください.
忘れないでください.
あなたのソフトウェア開発経歴会報を動かすこと
あなたがソフトウェア開発者としてあなたの経歴でレベルを上げるのを援助する電子メール会報!エバーワンダー
✔ ソフトウェア開発者の一般的な段階は?
✔ どのように、私はどのステージを知っていますか?どうやって次のステージに行けますか?
✔ どのような技術リーダーとどのように1つになるのですか?
✔ 私と一緒に歩いて、私の質問に答えてくれる人はいますか?
面白いですか?Join the community!
Reference
この問題について(あなたのクラスをよく命名闘争?), 我々は、より多くの情報をここで見つけました
https://dev.to/jamesmh/do-you-struggle-naming-your-classes-well-8c
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(あなたのクラスをよく命名闘争?), 我々は、より多くの情報をここで見つけました https://dev.to/jamesmh/do-you-struggle-naming-your-classes-well-8cテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol