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

リファクタリングによってコードが単純になるのはなぜですか?

先週、一貫した戻り値を持つメソッドと、それらがコードを単純化する方法について書きました。 しかし、それはどのように起こりますか? 適切なリファクタリングにより、コードの操作がどのように簡単になりますか?何が良い抽象化を良くし、悪い抽象化を悪くするのですか?つまり、コードを盲目的に再配置して、高品質のソフトウェアを作成することはできません。

理由を学ぶことができれば これらの手法が機能することで、コードがどこで助けを必要としているかをよりよく理解できるようになります。そして、最も重要な場所で適切なツールを使用できるようになります。

ソフトウェア開発で最も難しい問題は何ですか?

「コンピュータサイエンスには、キャッシュの無効化と名前の付け方という2つの難しい問題しかありません。」

– Phil Karlton

確かに、その引用はどこでも 。しかし、実際のソフトウェア開発には、実際にはもっと難しい問題があります。それは、複雑さの管理です。ソフトウェア開発の複雑さには、いくつかの異なる定義があります。ただし、基本的には、プログラムの複雑さは、プログラムに取り組んでいる間、頭の中に置いておく必要のあるものの量です。

より多くのソフトウェアを作成するにつれて、一度に頭の中に多くのものを保持できるようになります。しかし、最高の開発者でさえ限界があります。プロジェクトが複雑すぎると、頭の中で処理できるものが過負荷になり、プログラムのさまざまな領域を忘れ始めます。また、プロジェクトの一部に変更を加えたときに、その変更が同じプロジェクトのまったく異なる部分にどのように影響するかを理解せずに、最悪のバグが発生します。

仮定による単純化

写真の記憶があり、プログラムのさまざまな部分がどのように組み合わされているかを思い出せれば、バグははるかに少なくなりますよね?メモリを構築するのは難しい場合があります。 しかし、一度に1つのことに集中できることで、同じメリットをたくさん得ることができます。

ソフトウェア開発の多くのベストプラクティスは、一度に頭に入れておかなければならないことの数を減らすことです。いくつかの例:

  • 戻り値の一貫性 つまり、さまざまな状況でさまざまな種類のデータを処理するのではなく、1種類のデータを処理する方法を考えるだけで済みます。

  • 抽象化 シンプルなインターフェースの背後にコードを隠す方法です。優れた抽象化により、抽象化がどのようにすべきかを考えることができます。 行動すれば、内部でどのように機能するかを心配する必要はありません。

  • テスト 別の領域で作業しているときに、ある領域で誤ってコードを壊してしまうのを防ぐことができます。誤って壊したものはすべて捕らえられると想定できます。つまり、作業中のコードだけに集中して、後で壊れたものはすべて修正できます。

  • テスト駆動開発 期待どおりに機能するコードを作成するのに役立ちます。テストに合格するメソッドの可能な限り単純な実装の作成に集中できます。単純すぎて実際に期待どおりに機能しない場合は、テストで検出されます。

これらのテクニックを正しい方法で使用すると、いくつかの適切な仮定を立てることができます。これらの仮定により、頭の前にいる必要はありません。コードがシステムに与える可能性のあるほぼ無限の影響について心配する必要がないため、より優れた、より信頼性の高いコードを記述できます。

一方、これらのテクニックを間違った場所で使用すると、非表示になります。 実際に見る必要のあるコード。コードを非表示にすることで、あなたが行う仮定が間違っている場合があります。これにより、さらに 壊してしまう可能性があります!

だからこそ、悪い抽象化はまったく抽象化されないよりも悪いのです。そして、魔法のように良くなるまで、コードに「extractメソッド」を投げることができないのです。

適切なリファクタリング、適切な場所

明確なコードとは、それが何をしているのかを前もって知っているコードです。 知っておく必要のあることを示すことは、知る必要のないことを隠すことと同じくらい重要です。 リファクタリングを実行するとき、またはソフトウェアのベストプラクティスを使用するときは、最終的に得られるコードと、それが複雑さを軽減するのにどの程度役立ったかを考える必要があります。残りのコードがうまく機能し、仮定が単純化されるのを助けていますか?それとも、単純すぎるインターフェースの背後に重要な知識を埋め込んでいますか?


  1. ウイルス対策ソフトウェアの機能

    ウイルス対策ソフトウェアを信頼することになると、私たちは少し偏執的ではありませんか?ハイエンドで豊富な機能セットを備えた無数のウイルス対策ツールがオンラインで入手できます。しかし、たくさんある中から最高のウイルス対策ソフトウェアの 1 つを選ぶことになると、私たちは皆、決定に至るまで気が動転します。サイバー犯罪活動が急増しているこのデジタル時代では、デバイスを保護するために包括的なウイルス対策スイートを使用することが必須になります. しかし、ウイルス対策ソフトウェアはどれほど効果的でしょうか?潜在的なウイルス、マルウェア、およびその他のサイバー脅威からデジタル デバイスを保護しますか? そ

  2. 群集アニメーションを作成する 5 つの最高の群集シミュレーション ソフトウェア

    壮大な映画やテレビ番組、そして私たちを魅了して席に釘付けにする素晴らしい戦闘シーンが好きですか?ロード・オブ・ザ・リング、ゲーム・オブ・スローンズ、および同じジャンルに分類される他の多くの戦闘シーンについて言及しています。少数のメイン キャラクターを除いて、すべてのドラゴン、エルフ、架空のキャラクター、および大規模な軍隊がコンピューターで生成された効果であることは誰もが知っています。そして今日は、映画クリエーターが巨大な戦争シーンを作成したり、通りを歩いている人々を表示したりするために使用する、最高の群衆シミュレーション ソフトウェアについて説明します. Crowd Animation ソフト