搜尋
首頁web前端js教程第一次程式碼審查
第一次程式碼審查Sep 14, 2024 am 06:28 AM

昨天,我的程式碼第一次被其他人審查。作為我正在參加的開源開發課程的作業之一,我們必須審查彼此的程式碼。在這個練習中,我與 Vinh 搭檔,他是我的一個朋友,碰巧也是一位非常優秀的程式設計師。我們的任務是測試和歸檔彼此在課程中一直在使用的命令列工具工作的問題。

First code review

Vinh Nhan

/維尼揚

非同步與同步方法

我們透過文字同步和透過 GitHub 問題非同步進行程式碼審查。我發現同步方法可以更快地得到結果,因為我可以諮詢程式碼作者,了解他們在編寫程式碼時為什麼採用某種方法,並立即得到答案。然而,非同步方法消除了在兩個人的日程安排中找到固定時間來完成工作的需要。

測試 Vinh 的程序

Vinh 創建了一個名為「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. 建立一個 .env 檔案來儲存 Groq API 金鑰
    注意:有關如何取得和儲存 Groq API Key 的說明,請參閱 .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 import 和 CommonJS require,因為 chalk 模組需要使用 import,對 package.json 使用 import 會導致錯誤。添加評論來解釋這一點會很有幫助。

在 GitHub 上查看

輪到我了

接下來輪到我接受審核了。我不確定會出現什麼樣的問題,但 Vinh 最終發現了一堆我沒有註意到的問題:

  • 新增 npm 連結作為另一個選項,這樣就不必在自述文件的說明中為工具添加節點前綴

README.md 不包含執行「npm link」的指令 #2

First code review
維尼揚 發佈於

README.md 檔案缺少執行 npm 連結的指令,這是 CLI 工具本地開發和測試所必需的

在 GitHub 上查看
  • 使用 Commander.js 進行不必要的命令分配

`program.command("run")` 是不必要的,因為 CLI 沒有子指令 #3

First code review
維尼揚 發佈於
在 GitHub 上查看
  • 變數名稱拼字錯誤

變數名拼字錯誤 #4

First code review
維尼揚 發佈於

index.js 第 31 行:變數名稱中的拼字錯誤:reponseStream

在 GitHub 上查看

結論

我認為我做得很好,但事實證明,總是會有一個可能被遺漏的錯誤或一個可以改進的功能。有一雙新的眼睛來審視我寫的程式碼真是太棒了。目前,我修復了拼字錯誤並更新了自述文件,但其他問題需要測試,我計劃在發布 0.1 版本之前解決這些問題。

以上是第一次程式碼審查的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
在JavaScript中替換字符串字符在JavaScript中替換字符串字符Mar 11, 2025 am 12:07 AM

JavaScript字符串替換方法詳解及常見問題解答 本文將探討兩種在JavaScript中替換字符串字符的方法:在JavaScript代碼內部替換和在網頁HTML內部替換。 在JavaScript代碼內部替換字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 該方法僅替換第一個匹配項。要替換所有匹配項,需使用正則表達式並添加全局標誌g: str = str.replace(/fi

構建您自己的Ajax Web應用程序構建您自己的Ajax Web應用程序Mar 09, 2025 am 12:11 AM

因此,在這裡,您準備好了解所有稱為Ajax的東西。但是,到底是什麼? AJAX一詞是指用於創建動態,交互式Web內容的一系列寬鬆的技術。 Ajax一詞,最初由Jesse J創造

如何創建和發布自己的JavaScript庫?如何創建和發布自己的JavaScript庫?Mar 18, 2025 pm 03:12 PM

文章討論了創建,發布和維護JavaScript庫,專注於計劃,開發,測試,文檔和促銷策略。

如何在瀏覽器中優化JavaScript代碼以進行性能?如何在瀏覽器中優化JavaScript代碼以進行性能?Mar 18, 2025 pm 03:14 PM

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

如何使用瀏覽器開發人員工具有效調試JavaScript代碼?如何使用瀏覽器開發人員工具有效調試JavaScript代碼?Mar 18, 2025 pm 03:16 PM

本文討論了使用瀏覽器開發人員工具的有效JavaScript調試,專注於設置斷點,使用控制台和分析性能。

如何構建簡單的jQuery滑塊如何構建簡單的jQuery滑塊Mar 11, 2025 am 12:19 AM

本文將引導您使用jQuery庫創建一個簡單的圖片輪播。我們將使用bxSlider庫,它基於jQuery構建,並提供許多配置選項來設置輪播。 如今,圖片輪播已成為網站必備功能——一圖胜千言! 決定使用圖片輪播後,下一個問題是如何創建它。首先,您需要收集高質量、高分辨率的圖片。 接下來,您需要使用HTML和一些JavaScript代碼來創建圖片輪播。網絡上有很多庫可以幫助您以不同的方式創建輪播。我們將使用開源的bxSlider庫。 bxSlider庫支持響應式設計,因此使用此庫構建的輪播可以適應任何

jQuery矩陣效果jQuery矩陣效果Mar 10, 2025 am 12:52 AM

將矩陣電影特效帶入你的網頁!這是一個基於著名電影《黑客帝國》的酷炫jQuery插件。該插件模擬了電影中經典的綠色字符特效,只需選擇一張圖片,插件就會將其轉換為充滿數字字符的矩陣風格畫面。快來試試吧,非常有趣! 工作原理 插件將圖片加載到畫布上,讀取像素和顏色值: data = ctx.getImageData(x, y, settings.grainSize, settings.grainSize).data 插件巧妙地讀取圖片的矩形區域,並利用jQuery計算每個區域的平均顏色。然後,使用

如何使用源地圖調試縮小JavaScript代碼?如何使用源地圖調試縮小JavaScript代碼?Mar 18, 2025 pm 03:17 PM

本文說明瞭如何使用源地圖通過將其映射回原始代碼來調試JAVASCRIPT。它討論了啟用源地圖,設置斷點以及使用Chrome DevTools和WebPack之類的工具。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。