Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

悪い抽象化があなたのコードを手錠するのを防ぐ方法

(この投稿は、数か月前にリストに送信したものに基づいています。毎週このように読むには、ここに参加してください!)

プログラミングフローを節約するために少し便利な方法を使用する際に、最も単純な抽象化によってコードベースの操作をより楽しくする方法について説明しました。

しかし、悪いがある場合はどうでしょうか 抽象化?

APIリファレンスを毎回掘り下げます その方法が明確に何であるかを理解する leaderboardという名前にする必要があります 実際に呼ばれます。あなたはそれをリファクタリングしようとしますが、コードの一部は構造化データを渡し、他の部分は生のテキスト行を提供します。そして、あなたがコードに触れるたびに、何かが壊れて、あなたはそれをデバッグしようとして一日の残りを吹き飛ばします。 positionを微調整したため 、ただしscoreは更新されませんでした 同時に。

では、悪いものから遠く離れたまま、どのようにして良い抽象化を構築しますか?

優れたメタファーを使用してより明確なコードを記述します

優れた抽象化は、優れた比喩から生まれます。

比喩 すでに頭の中にある概念に関連付けて、システム内の何かを説明します。 例:

  • 多くのコマンドラインは、パイプのメタファーを使用しています 。

    パイプの一方の端にデータを配置すると、もう一方の端からデータが出力されます。想像しやすく、使いやすい。

  • 並行プログラミングでは、ロック 良い比喩です。

    ロックが内部でどのように機能するかについて何も知らなければ、リソースがロックされていると、それを使用できないことがわかります。ロックが解除されるまで待つ必要があります。

  • オブジェクト指向プログラミングでは、メッセージパッシング 特定のメンタルイメージをトリガーします。オブジェクトが別のオブジェクトにメッセージを渡します。 2番目のオブジェクトは、メッセージを処理したり、他の人にメッセージを渡したりすることができます。

    アイデアを得るために実装について何も知る必要はありません(そして、プロキシパターンのようなものをはるかに理解しやすくします)。

良い比喩は重要です。 優れたメタファーに基づいた抽象化を見つけた場合、コードを理解するためにドキュメントを読んだり、ソースダイビングを行ったりする必要はほとんどありません。 思いついた比喩が優れているほど、システムを他の人に説明しやすくなり、後でシステムで作業しやすくなります。

どのようにして優れた比喩を思いつきますか?

優れた比喩は具体的で自己完結型であり、それが説明するものの鮮やかな精神的イメージを作成します。 誤解の余地はなく、コードの動作と可能な限り一致します。誰かが比喩の理解に基づいてコードについて仮定を立てる場合、それらの仮定は有効であるはずです。

良い比喩を思い付くのは難しいです。正しいメタファーを見つける前に、いくつかのリークのあるメタファーを経験することがよくありますが、それは問題ありません。 練習すれば簡単になります。 しかし、これが私を助けたプロセスです:

について考えてください どのようにかを考えずに、少しコードを実行します。 それはそれをします。どんなイメージが思い浮かびますか?他のコードはそれをどのように使用しますか?それを一言か二言で説明しなければならないとしたら、どの言葉を使いますか?それを書き留めてください。

次に、そのイメージについて考えます。そのコードがどのように機能するかに適合しますか?比喩を通して漏れるエッジケースはありますか? 他に何かありますか 新しい寄稿者がコードを使用する前に理解しなければならない比喩は?比喩について考えるとき、頭の中にはっきりとした絵が浮かびますか、それとも曖昧ですか?

これらは、メタファーがコードと十分に一致していないことを示す指標です。 しかし、良い比喩に近ければ近いほど、そこにたどり着くために必要な飛躍は少なくなります。

最後に、それを文の中で使用します。 「このコードはです (何か)、なぜなら…」技術的なバックグラウンドのない人にあなたの比喩を説明し、それが何をするのかを彼らに理解してもらえますか?誰かが比喩を理解するために必要な背景が少なければ少ないほど、あなたの比喩はより役に立ちます。

近くにいるが、完全にそこにいない場合は、シソーラスを調べてください。 類似した単語の微妙な違いは、OKの比喩と完璧な比喩の違いを意味する場合があります。

メタファーとOOP

オブジェクト指向プログラミングは、基本的に比喩に基づいています。それがその力を得るところです!適切に設計されたクラスは、実装を他のクラスから隠すだけでなく、実装をあなたから隠します。 。

優れた比喩を使えば、クラス名だけでオブジェクトの使用方法を理解できるはずです。 クラスに適切な名前が付けられていて、適切な画像が頭に浮かぶ場合は、クラスを理解するためにクラスの実装に飛び込む必要はありません。

では、最後に使用したコードのクラスについて考えていただきたいと思います。特に明確な比喩を持っているものを思いつくことができますか?反対するのではなく、どのクラスと一緒に仕事をしていると思いますか?それらの使い方を理解するために、どれくらいの頻度でそれらを掘り下げますか?

あなたが見つけたものを聞きたいです。コメントを残して、私に知らせてください。

優れたソフトウェア開発者になるには、作成しているコードと実行しているプロセスについて意識的に考える必要があります。 そして私はあなたを助けることができます。

Practiceing Railsの無料の32ページのサンプルをダウンロードしてください 、そしてこのようなアイデアを、圧倒されることなく小規模に試す方法を学びましょう。


  1. WhatsApp アカウントをハッカーから守る方法

    テキスト メッセージ アプリといえば、まず WhatsApp が思い浮かびます。 WhatsApp は文字通り昔ながらの単純なテキスト メッセージの送信方法を引き継いでおり、平文の送信だけに制限されるのではなく、愛する人とつながるためのまったく新しいプラットフォームを提供してくれました。写真、ビデオ、ライブ ロケーションの送信など、WhatsApp はテキスト メッセージの最新のアプローチであり、さらに多くのことができます。 しかし、WhatsApp が世界中で人気を博している最も重要な理由の 1 つは、その安全性です。 WhatsAppは、アカウント、個人データ、および会話が常に安全な

  2. Telegram をマルウェアから保護する方法

    ブログのまとめ – サイバー犯罪者は、Telegram ユーザーを暗号ウォレット マルウェアで標的にしています。別の攻撃では、偽の Telegram デスクトップ アプリで致命的なマルウェアが確認されました。マルウェアから身を守る方法の詳細をお読みください。 Telegram は、Android、iOS、および Windows で利用できるクロスプラットフォームのインスタント メッセージング サービスです。これは、プライバシー ポリシーで最もよく知られているクラウドベースのメッセージング アプリです。しかし、その機能によってユーザーから得られる魅力にもかかわらず、このアプリはマルウェアの攻撃