ホームページ  >  記事  >  ウェブフロントエンド  >  最初のコードレビュー

最初のコードレビュー

DDD
DDDオリジナル
2024-09-14 06:28:401023ブラウズ

昨日、私は初めて自分のコードを他の人にレビューしてもらいました。私が受講しているオープンソース開発コースの課題の 1 つとして、お互いのコードをレビューする必要がありました。この演習では、友人であり、非常に優れたプログラマーでもある Vinh とペアを組みました。私たちは、コースでそれぞれ取り組んできたコマンド ライン ツールについて、お互いの作業をテストし、問題を提出するという任務を負っていました。

First code review

ヴィンニャン

/ヴィンヒャン

非同期アプローチと同期アプローチ

私たちはコード レビューをテキスト上で同期的に、および GitHub の問題上で非同期的に行いました。コードを作成する際に特定のアプローチを採用した理由についてコードの作成者に相談でき、すぐに返答が得られるため、同期アプローチの方が結果が早くなることがわかりました。ただし、非同期アプローチを使用すると、作業を完了するために両方の人のスケジュールから固定時間を見つける必要がなくなります。

Vinh のプログラムをテストする

Vinh は、AI を使用してテキスト フレーズを他の言語に翻訳する、barrierless と呼ばれるコマンド ライン ツールを作成しました。これは素晴らしいアイデアだと思いました。私が Vinh のプログラムのテストを開始したとき、それはまだ開発初期段階だったので、まだ README がありませんでした (現在はあります。ぜひチェックしてください!)。

First code review ヴィンヒャン / バリアレス

バリアレスとは

Barrierless は、ある言語から別の言語へのシームレスな翻訳を提供することにより、言語の壁を取り除くように設計されたコマンドライン ツールです。 GROQCloud を活用したこのツールを使用すると、ユーザーはテキストを希望のターゲット言語にすばやく翻訳できるため、異なる言語間でのコミュニケーションが容易になります。

特徴

  • 言語を自動検出します。
  • 複数言語のサポート: テキストを幅広い言語間で翻訳します。
  • GROQCloud 統合: GROQCloud の高性能翻訳 API を利用します。
  • 使いやすさ: シンプルなコマンドライン インターフェイスで迅速に翻訳できます。
  • カスタマイズ可能: 追加の言語機能や API サポートのために簡単に拡張できます。

使用方法

インストール

  1. リポジトリのクローンを作成し、プロジェクト ディレクトリに移動します。
git clone git@github.com:vinhyan/barrierless.git
  1. プロジェクト ディレクトリに移動します:
cd barrierless
  1. 必要な依存関係をインストールします:
npm install
  1. Groq API キーを保存する .env ファイルを作成します
    注: Groq API キーを取得して保存する方法については、.env.example を参照してください

  2. ステップ 3 で npm install -g を使用した場合は、このステップを省略します…

GitHub で表示

A feature I really liked is the colorful output text which makes the user experience a little bit more pleasant - something I neglected in my own program in trying to model it after CLI tools like git.

I read the package.json file to find out how the program should be run, and when it immediately crashed I realized I forgot to add the API key as an environment variable. After adding my API key, the program ran without errors, although I did find an interesting quirk - the program defaults the output language to English, so if you didn't specify one, and the input was in English, it seemed to choose a language to translate to on its own - either randomly, or based on context from the input.

First code review

First code review

I opened a few other issues, mostly to do with improving code quality:

  • A missing try/catch block around an async function call

Uncaught exception in index.js #7

First code review
uday-rana posted on

index.js contains the following async function calls which are not wrapped in a try/catch block and may lead to an uncaught exception:

export async function main(text, targetLang) {
  const chatCompletion = await getGroqChatCompletion(text, targetLang);
  console.log(chatCompletion.choices[0]?.message?.content || '');
}

...

program
  ...
  .action(async (text, options) => {
    console.log(chalk.blue(`Translating  <span class="pl-s1"><span class="pl-kos">${text}</span>...`</span>));

    await main(text, options.language);
  });
Enter fullscreen mode Exit fullscreen mode
View on GitHub
  • Some suggestions to make code easier to understand

Could simplify code #8

First code review
uday-rana posted on

Some changes may be made to to the project make it easier to understand and work on:

  • [x] Move Groq configuration above program initialization with commander
  • [x] main() seems unnecessary since it contains two lines of code and there are more lines of code involved in creating and invoking the function than if it was omitted
  • [ ] prompt.js seems unnecessary since it just contains a single function which places arguments into a template literal and returns them
  • [x] Exporting main() and getGroqChatCompletion() seems unnecessary
View on GitHub
  • Adding a comment to explain the use of both import and require statements

Add comments explaining mixed import/require #9

First code review
uday-rana posted on

プロジェクトは ES6 インポートと CommonJS の両方を使用しています。これは、Chalk モジュールがインポートの使用を必要とし、package.json にインポートを使用するとエラーが発生するためです。これについて説明するコメントを追加していただけると助かります。

GitHub で表示

私の番

次に私がレビューされる番でした。どのような問題が発生するかわかりませんでしたが、Vinh は最終的に、私が注目していなかった多くの問題を見つけてくれました。

  • README の手順でツールの前にノードを付ける必要がないようにするための別のオプションとして npm リンクを追加します。

README.md には「npm link」を実行するための命令が含まれていません。 #2

First code review
ヴィンヒャン 投稿日:

README.md ファイルには、CLI ツールのローカル開発とテストに必要な npm リンクを実行するための手順がありません

GitHub で表示
  • commandor.jsを使用した不要なコマンドの割り当て

CLI にはサブコマンドがないため、`program.command("run")` は不要です #3

First code review
ヴィンヒャン 投稿日:
GitHub で表示
  • 変数名のタイプミス

変数名のタイプミス #4

First code review
ヴィンヒャン 投稿日:

index.js 31 行目: 変数名のタイプミス: reponseStream

GitHub で表示

結論

私はかなり良い仕事をしたと思っていましたが、見落とされた可能性のあるバグや改善できる機能が常に存在することを示しています。自分が書いたコードを新鮮な目で精査してもらえるのはとてもうれしかったです。現時点では、タイプミスを修正し、README を更新しましたが、他の問題についてはテストが必要なので、バージョン 0.1 をリリースする前に解決する予定です。

以上が最初のコードレビューの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。