如何幫助編寫代碼文檔和單元測試

有多少次你專注于編程而忘記了寫函數(shù)、方法、類的非常簡單的代碼文檔?我不是在問單元測試. 直到我發(fā)現(xiàn)可以做到這一點:

除了代碼文檔,它在編寫單元測試方面也做得很好。此外,在最后,我可以要求他為其他想使用我的代碼的貢獻者生成一個用戶友好的文檔。在這篇文章中,我將告訴你如何使用來寫:

寫代碼文檔

寫單元測試

生成你的代碼的用戶文檔

讓機器學(xué)習(xí)使軟件開發(fā)和我們的軟件開發(fā)人員的生活更容易。

如何幫助編寫代碼文檔

聽起來很簡單,問問他就知道了。為了說明這一點,我們實際上需要一個代碼例子,要求為我們寫。

下面是它寫的代碼:

// This code generates a random number between 1 and 10
function getRandomNumber() {
  return Math.floor(Math.random() * 10) + 1;
}
// This function checks if a number is even
function isEven(number) {
  return number % 2 === 0;
}
// This function doubles a number
function doubleNumber(number) {
  return number * 2;
}
// This function logs the result of doubling a random even number
function logDoubleOfRandomEven() {
  const randomNumber = getRandomNumber();
  if (isEven(randomNumber)) {
    const doubledNumber = doubleNumber(randomNumber);
    console.log(`The double of ${randomNumber} is ${doubledNumber}`);
  } else {
    console.log(`${randomNumber} is not even. Cannot double it.`);
  }
}
// Call the function to log the result of doubling a random even number
logDoubleOfRandomEven();

一些非常簡單的函數(shù),沒有什么代碼文檔讓我們了解發(fā)生了什么事。,困難的部分已經(jīng)完成了! 讓我們來看看有趣的部分! 我們可以打開的聊天記錄如何使用chatgpt寫代碼,很好地命令他:

為這段代碼添加,并確保包含代碼標簽,包括你想要的代碼,如下面的截圖所示,并在下面留下一些空間來做:

image

我使用了確保你包括代碼標簽如何使用chatgpt寫代碼,因為它有時會在段落中返回代碼,所以這告訴他要在代碼塊中包括代碼。你試過了嗎?這是我的結(jié)果:

/**
 * Generates a random number between 1 and 10.
 *
 * @returns {number} A random number between 1 and 10.
 */
function getRandomNumber() {
  return Math.floor(Math.random() * 10) + 1;
}
/**
 * Checks if a number is even.
 *
 * @param {number} number - The number to check.
 * @returns {boolean} true if the number is even, false otherwise.
 */
function isEven(number) {
  return number % 2 === 0;
}
/**
 * Doubles a number.
 *
 * @param {number} number - The number to double.
 * @returns {number} The double of the input number.
 */
function doubleNumber(number) {
  return number * 2;
}
/**
 * Logs the result of doubling a random even number.
 */
function logDoubleOfRandomEven() {
  const randomNumber = getRandomNumber();
  if (isEven(randomNumber)) {
    const doubledNumber = doubleNumber(randomNumber);
    console.log(`The double of ${randomNumber} is ${doubledNumber}`);
  } else {
    console.log(`${randomNumber} is not even. Cannot double it.`);
  }
}
// Call the function to log the result of doubling a random even number
logDoubleOfRandomEven();



現(xiàn)在你沒有借口不把你的代碼寫成大師的樣子了很好,是吧?

用編寫更好的單元測試

現(xiàn)在,一旦我們記錄了我們的代碼,是時候進一步提高代碼質(zhì)量并添加一些單元測試了。我們再次去聊天,并要求:

使用jest編寫單元測試

你不需要再包含代碼了,它很聰明,明白自己必須為以前的代碼寫單元測試。只要確保你一直在同一個聊天室里問它,一直如此

這里是我們令人敬畏的單元測試:

const {
  getRandomNumber,
  isEven,
  doubleNumber,
  logDoubleOfRandomEven,
} = require('./example');
describe('getRandomNumber', () => {
  test('should generate a number between 1 and 10', () => {
    const randomNumber = getRandomNumber();
    expect(randomNumber).toBeGreaterThanOrEqual(1);
    expect(randomNumber).toBeLessThanOrEqual(10);
  });
});
describe('isEven', () => {
  test('should return true for an even number', () => {
    const evenNumber = 2;
    expect(isEven(evenNumber)).toBe(true);
  });
  test('should return false for an odd number', () => {
    const oddNumber = 3;
    expect(isEven(oddNumber)).toBe(false);
  });
});
describe('doubleNumber', () => {
  test('should double a number', () => {
    const number = 3;
    expect(doubleNumber(number)).toBe(6);
  });
});
describe('logDoubleOfRandomEven', () => {
  test('should log the double of a random even number', () => {
    const consoleSpy = jest.spyOn(console, 'log');
    const mockedRandomNumber = 4;
    const expectedOutput = `The double of ${mockedRandomNumber} is ${doubleNumber(mockedRandomNumber)}`;
    jest.spyOn(global.Math, 'random').mockReturnValueOnce(mockedRandomNumber / 10);
    logDoubleOfRandomEven();
    expect(consoleSpy).toHaveBeenCalledWith(expectedOutput);
    consoleSpy.mockRestore();
  });
  test('should log an error message if the random number generated is not even', () => {
    const consoleSpy = jest.spyOn(console, 'log');
    const mockedRandomNumber = 3;
    const expectedOutput = `${mockedRandomNumber} is not even. Cannot double it.`;
    jest.spyOn(global.Math, 'random').mockReturnValueOnce(mockedRandomNumber / 10);
    logDoubleOfRandomEven();
    expect(consoleSpy).toHaveBeenCalledWith(expectedOutput);
    consoleSpy.mockRestore();
  });
});

不要完全依賴它,這段代碼有時會被破壞,只要拿著它,運行它,如果沒有問題就是好的,如果沒有問題就重構(gòu)它,甚至再問他:

這些單元測試是不對的,重新檢查它們

這將提供你需要的單元測試,肯定的

用創(chuàng)建用戶友好的文檔

是時候與我們的伙伴們分享我們的代碼了!我們回到聊天室,要求它:寫一份用戶友好的文檔,并提供一些如何使用代碼的例子

如果你在同一個聊天室里一直問它,它已經(jīng)知道你需要什么代碼的文檔了。生成的文檔太長了,不能在這里寫,所以我把它分成幾個小部分。我非常喜歡如何使用chatgpt寫代碼,因為它是如何組織頭文件和代碼例子的。

這是它開始的方式,有一個小的介紹:

image-1

后來,它進入了使用階段:

image-2

當(dāng)然,它不知道你將如何導(dǎo)出它以及文件的名稱,所以它只是猜測。如果你想要一個更精確的文件,你需要為它提供更多的信息。

正如你所猜測的,它認為這個代碼將在環(huán)境中運行,并提供了輸入和輸出:

image-3

標明描述有多好,它能解釋你的代碼是怎么回事。

最后是代碼實例:

例1:生成并加倍一個隨機偶數(shù):

image-5

例2:生成一個隨機數(shù)

image-4

例3:檢查一個數(shù)字是否為偶數(shù)

image-6

例子4:一個數(shù)字的兩倍

image-7

令人印象深刻,對嗎?想想看,我們節(jié)省了多少時間?不到10分鐘,我們就有了代碼和用戶文檔以及單元測試。如果沒有的幫助,這需要更多的時間。

使用進行代碼文檔和測試的好處

簡而言之,讓我們總結(jié)一下這些好處,這些好處可以提高我們的代碼質(zhì)量,節(jié)省我們的時間,使我們的工作更容易被別人接受:

有助于自動化編寫代碼文檔的過程,從而形成清晰簡潔的文檔,易于閱讀和理解。這為開發(fā)人員節(jié)省了寶貴的時間和精力。

可以協(xié)助進行單元測試,確保我們的代碼經(jīng)過全面測試,沒有錯誤,并符合行業(yè)標準。這有助于提高代碼質(zhì)量。

生成用戶友好的文檔,使其他貢獻者能夠輕松理解和使用我們的代碼。這確保了文檔的一致性,增加了所有用戶的可及性。

所有這些好處都促進了團隊合作,確保了代碼文檔的一致性和準確性。

結(jié)論: 擁抱AI輔助的文檔和測試以獲得更好的結(jié)果.總的來說,通過使用,我們可以只專注于編寫優(yōu)秀的代碼而不犧牲文檔和測試。似乎是一個強大的工具,適用于各種水平和背景的開發(fā)人員。無論你是前端開發(fā)者還是全棧開發(fā)者,它都能幫助你寫出符合行業(yè)標準的高質(zhì)量代碼,并讓所有人都能使用。覺得對您有幫助,請贊一下。

其他對您可能有幫助的文章:

微服務(wù)架構(gòu)設(shè)計

視頻直播平臺的系統(tǒng)架構(gòu)演化

微服務(wù)與介紹

與CI持續(xù)集成/CD

互聯(lián)網(wǎng)電商購物車架構(gòu)演變案例

互聯(lián)網(wǎng)業(yè)務(wù)場景下消息隊列架構(gòu)

互聯(lián)網(wǎng)高效研發(fā)團隊管理演進之一

消息系統(tǒng)架構(gòu)設(shè)計演進

互聯(lián)網(wǎng)電商搜索架構(gòu)演化之一

企業(yè)信息化與軟件工程的迷思

企業(yè)項目化管理介紹

軟件項目成功之要素

人際溝通風(fēng)格介紹一

免責(zé)聲明:本文系轉(zhuǎn)載,版權(quán)歸原作者所有;旨在傳遞信息,不代表本站的觀點和立場和對其真實性負責(zé)。如需轉(zhuǎn)載,請聯(lián)系原作者。如果來源標注有誤或侵犯了您的合法權(quán)益或者其他問題不想在本站發(fā)布,來信即刪。