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

私は自分のコードを乾式編集しましたが、今では扱いにくいです。どうした?

「Don’t Repeat Yourself」は、ソフトウェア開発のキャリアの中で読んだ最も価値のある本の1つからの最も価値のあるアイデアの1つです。重複するコードをリファクタリングできれば、より一般的で安定したコードが生成されます。ただし、コードのドライアップを開始すると、いくつかの問題が発生し始めます。エッジケースを適切に処理できないコード、一般化されすぎて読みにくいコード、または見つけにくいコードです。 DRYnessに向けたリファクタリングが常に機能しない場合、いつリファクタリングする必要があるかをどのようにして知ることができますか?

Too-DRYコードは、リファクタリングを試みるべき重複の種類についての誤解から生じています。 必須の違いを識別できる必要があります 重複と偶発的 複製。

必須 複製とは、取り組んでいる問題のクラスを解決するコードです。これは、すぐに殺すべき種類の重複です。

偶発的 ただし、複製とは、目前の問題である「偶然の一致による複製」とは関係のない複製です。偶発的な重複を積極的にクリーンアップすると、新しいケースが追加されたときにリファクタリングを行わない必要がある、より脆弱なコードになってしまいます。

しかし、どうすれば違いがわかりますか?経験を積めば、これは上手くいくかもしれませんが、何十年にもわたるプログラミングを行った後でも、半分の時間でもこれを正しく行うことはできません。幸いなことに、大いに役立つ一般的なルールがあります。三振法とリファクタリングです。

初めて何かをするときは、それをするだけです。

2回目に似たようなことをするときは、重複にひるむが、とにかく重複することをする。

3回目に同様のことを行うと、リファクタリングします。

これが役立つ理由がわかりますか? 3回目までに、パターンがどこにあるかを確認し始める必要があります。問題を解決するためにどの重複コードが必要であり、どのコードが偶然に同じように見えるかを知っておく必要があります。 基本的にあるコードだけを一般化(およびドライアップ)し始めることができます 解決しようとしている問題のすべてのインスタンスで同じです。

少し時間を取って、リファクタリングが最後に痛みを引き起こしたときのことを考えてください。問題の2つのコピー間で複製されたものを乾かそうとしていましたが、3番目のコピーは少し異なっていましたか?

そして、次にコードを複製する必要があると感じたときは、リファクタリングする前に3番目のコピーまで待ってみてください。 (本当に大変でひどい気分ですが、目を閉じてとにかく試してみてください)。次に、コードを乾かしながら考えてみてください。 2番目のコピーを書き込んだ直後にリファクタリングした場合とは異なる方法でリファクタリングしますか?


  1. Windows 10 Meet Nowとは何ですか、それを削除する方法

    最近、Windows 10バージョン20H2に更新しましたか?システムトレイの新機能に気付いたかもしれません。 今すぐ会う ボタンはZoomに対するWindows10の回答であり、ビデオ会議を簡単に支援することを直接目的としています。 Windows 10 Meet Nowについて知っておく必要のあるすべての情報に加えて、Windows 10を非表示にしたり、削除したりする方法を説明します。 Windows 10 Meet Nowとは何ですか? Windows 10 Meet Nowは、Windows10と統合されたSkype機能です。10月に公開されたWindows10 20H2の更新

  2. RuboCopを使用したRubyコードのリンティングと自動フォーマット

    リンティングは、プログラムおよびスタイルのエラーについてソースコードを自動チェックすることです。このチェックは、リンターと呼ばれる静的コード分析ツールによって実行されます。ただし、コードフォーマッタは、事前に構成された一連のルールに厳密に準拠するようにソースコードをフォーマットするためのツールです。リンターは通常違反を報告しますが、問題を修正するのは通常プログラマー次第ですが、コードフォーマッターはそのルールをソースコードに直接適用する傾向があるため、フォーマットの間違いを自動的に修正します。 プロジェクトでより一貫性のあるコードスタイルを作成するタスクでは、通常、個別のリンティングツールと