あなたがIDEを助けるなら、あなたのIDEは助けます - 例
8685 ワード
私はめったに読まないクリーンなコード アングルについて以前に書きました: .
これは視点の変更です.
これがあなたにとって異質に聞こえるなら、私は最近、実際に問題を引き起こす可能性のある、一見無害に見えることを発見しました.
また、2 つのオプションがあります.これらの関数を配列として追加するか、ディレクトリを追加すると、
ここで、
次に、ディレクトリを指定するオプションを使用します.
いまいましいディレクトリから
すべて問題ありませんが、後で他の開発者が問題を追跡するようになります. 🤔.
したがって、彼らは
...そして「使用禁止」と書いてあります.次に、
「それじゃあ、どうやら本当にデッドコードだったようですね!では削除しましょう!」
そして、すべての地獄が解き放たれます.
または、削除せずに、1 つのフォルダーに 1 つのファイルが入っているのが面倒で、もったいないと思うので、
これらはすべて問題を引き起こし、
PRO: 新しいミドルウェア/コントローラーの追加やクリーンアップについて考える必要はありません.
短所: IDE は、これらのどれも使用されていないと言います.間違ったフォーマットを使用した場合、
個人的には、実行前チェックは非常に便利だと思います.2 つのソリューションがある場合は、それらの数が多い方を好みます.
サーバーを作成するファイルの別の場所:
👍
長所:
の使用法を知るようになります を削除/リファクタリングすると、警告が表示されることがあります
短所:
少し入力する必要があるかもしれません (ただし、あまり多くはありません)
ここには明確な勝者がいると思います.
この場合、それらをより小さなフォルダーにグループ化することも必要です.たとえば、次のようにします.
このソリューションでは、
最後に、サーバーを作成する場所はシンプルなままにできますが、非常に長いインポート/エクスポートをきれいで読みやすいファイルにまとめました.
選択できるオプションがある場合は、使用しているコーディング ツールでより適切に機能するソリューションを選択する必要があります.彼らに愛情と気遣いを与えれば、彼らはあなたが必要なときにあなたを救ってくれます.
🙃
これは視点の変更です.
Instead of scraping together the easiest to write code possible you think about how much the coding tools (particularly your
IDE
ortypescript
transpiler) are going to be able to make use of it.
これがあなたにとって異質に聞こえるなら、私は最近、実際に問題を引き起こす可能性のある、一見無害に見えることを発見しました.
koa
ライブラリを使用して routing-controllers
サーバーを起動するとします.あなたは controllers
、 middlewares
、 interceptors
を持っています ...また、2 つのオプションがあります.これらの関数を配列として追加するか、ディレクトリを追加すると、
createKoaServer
関数が検索します.ここで、
errorInterceptor
があるとします.// 'interceptors/error-interceptor/index.js'
export function errorInterceptor() { /* ... */ }
次に、ディレクトリを指定するオプションを使用します.
import * as path from 'path';
import { createKoaServer } from 'routing-controllers';
const app = createKoaServer({
controllers: [path.join(__dirname, 'controllers/**/index.js')],
middlewares: [path.join(__dirname, 'middlewares/**/index.js')],
interceptors: [path.join(__dirname, 'interceptors/**/index.js')]
});
export { app };
いまいましいディレクトリから
middlewares
、 controllers
、 interceptors
をすべてロードすることで、本当に将来を見据えたのですか?すべて問題ありませんが、後で他の開発者が問題を追跡するようになります. 🤔.
したがって、彼らは
errorInterceptor
で Find Usages
オプションを使用します....そして「使用禁止」と書いてあります.次に、
IDE
を検索し、定義のみを見つけます.「それじゃあ、どうやら本当にデッドコードだったようですね!では削除しましょう!」
そして、すべての地獄が解き放たれます.
または、削除せずに、1 つのフォルダーに 1 つのファイルが入っているのが面倒で、もったいないと思うので、
errorInterceptor
-> index.js
の名前を変更して、1 つ上のフォルダーに移動して error-interceptor.js
に...これらはすべて問題を引き起こし、
interceptors/error-interceptor.js
ボタンを押すまでわかりません.長所と短所
PRO: 新しいミドルウェア/コントローラーの追加やクリーンアップについて考える必要はありません.
短所: IDE は、これらのどれも使用されていないと言います.間違ったフォーマットを使用した場合、
Run
トランスパイラーは役に立ちません...基本的にすべての自動セーフガードをオフにしました.テストだけがあなたを救うことができます.個人的には、実行前チェックは非常に便利だと思います.2 つのソリューションがある場合は、それらの数が多い方を好みます.
Runtime is a "weird quantum state" where we do not know what is there until we get there: the more we push into this realm that less our coding tools will help us find the landmines before we step on them.
他のオプションを使用して、アイテムを自分で渡すとどうなるでしょうか?
typescript
ファイルはそのままにしておきます.以前のソリューションの「将来性」を維持するために、error-interceptor/index.js
フォルダーに新しいファイルを作成しましょう.// `interceptors/index.js`
import { errorInterceptor } from './errorInterceptor/.';
import { otherInterceptor } from './otherInterceptor/.';
export const interceptors = [errorInterceptor, otherInterceptor, /* ... */];
サーバーを作成するファイルの別の場所:
import { createKoaServer } from 'routing-controllers';
import { interceptors } from './interceptors/.';
const app = createKoaServer({
interceptors: interceptors,
// controllers: controllers,
// middlewares: middlewares
});
export { app };
👍
長所と短所
長所:
interceptors
と IDE
は、関数 typescript
/controllers
/middlewares
を移動すると、injectors
を使用してパスを更新できます... 短所:
ここには明確な勝者がいると思います.
「しかし、コントローラーが 50 個以上ある場合はどうなるでしょうか?」
この場合、それらをより小さなフォルダーにグループ化することも必要です.たとえば、次のようにします.
\controllers
\user-controllers
\login
\logout
\...
\index.js
\product-controllers
\add
\remove
\...
\index.js
index.js
このソリューションでは、
IDE
が読み込まれ、配列にグループ化され、フォルダーからすべてのコントローラーがエクスポートされます.// controllers/user-controllers/index.js
import { login } from './login';]
// ...
export const userControllers = [login, logout, /* ... */];
// ------
// /controllers/index.js
import { userControllers } from './user-controllers';
import { productControllers } from './product-controllers';
export const controllers = [...userControllers, ...productControllers, /* ... */];
最後に、サーバーを作成する場所はシンプルなままにできますが、非常に長いインポート/エクスポートをきれいで読みやすいファイルにまとめました.
概要
選択できるオプションがある場合は、使用しているコーディング ツールでより適切に機能するソリューションを選択する必要があります.彼らに愛情と気遣いを与えれば、彼らはあなたが必要なときにあなたを救ってくれます.
🙃
Reference
この問題について(あなたがIDEを助けるなら、あなたのIDEは助けます - 例), 我々は、より多くの情報をここで見つけました https://dev.to/latobibor/your-ide-helps-if-you-help-the-ide-example-31g2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol