国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【軟件工程】軟件設(shè)計中的通用編碼規(guī)范

這篇具有很好參考價值的文章主要介紹了【軟件工程】軟件設(shè)計中的通用編碼規(guī)范。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

總結(jié)軟件工程中的一些通用編碼規(guī)范。


提示:以下內(nèi)容參考chat回答

一、通用編碼規(guī)范

1. 命名規(guī)范

  • 變量、函數(shù)、類和文件名應(yīng)該簡明易懂,使用英文單詞或單詞縮寫,并使用下劃線或駝峰命名法。
  • 變量名應(yīng)該使用名詞,函數(shù)名應(yīng)該使用動詞,類名應(yīng)該使用名詞或名詞短語,文件名應(yīng)該使用有意義的名稱。
  • 舉例:
first_name = "John"
last_name = "Doe"

(1)使用駝峰命名法

def calculateSalary():
    pass
    
class CustomerOrder:
    pass

(2)使用有意義的文件名

customer_order.py

2. 格式化規(guī)范

  • 代碼行長度應(yīng)該不超過80個字符。
  • 使用一致的縮進(jìn)和空格以使代碼更易于閱讀
  • 在兩個操作符之間使用空格,例如賦值、比較和算術(shù)操作符
  • 舉例:
    (1)代碼行長度不超過80個字符
def calculate_discount(price, discount_percentage):
    return price * discount_percentage / 100

(2)使用一致的縮進(jìn)和空格

if user_age < 18:
    print("You are a minor")
else:
    print("You are an adult")

(3)在賦值、比較和算術(shù)操作符之間使用空格

age = 25
if age == 18:
    print("You are a young adult")

3. 注釋規(guī)范

  • 注釋應(yīng)該清晰、有意義,并解釋代碼的目的,而不是顯而易見的東西。
  • 注釋應(yīng)該寫在需要注釋的代碼上面,并在需要的地方使用空行分隔。
  • 舉例:
def calculate_discount(price, discount_percentage):

(1)計算折扣后的價格

return price * discount_percentage / 100

(2)兩行空行分隔

class CustomerOrder:

4. 函數(shù)的長度規(guī)范

  • 盡量保持函數(shù)的短小精悍,以提高代碼的可讀性和可維護(hù)性。
  • 函數(shù)應(yīng)該只做一件明確的事情,如果函數(shù)過于復(fù)雜,則需要將其拆分成較小的函數(shù)。
  • 舉例:
def process_customer_order(customer, order_items):

(1)檢查客戶地址的有效性

 check_address(customer.address)

(2)檢查訂單是否有足夠的庫存

for item in order_items:
    check_stock(item.product_code, item.quantity)

(3)保存訂單

 save_order(customer, order_items)

(4)較短函數(shù)

def check_address(address):

(5)檢查地址的有效性

def check_stock(product_code, quantity):

(6)檢查庫存是否充足

    pass

def save_order(customer, order_items):

(7) 保存訂單

5. 錯誤處理規(guī)范

  • 帶有適當(dāng)錯誤處理的代碼不僅更可靠,而且更容易調(diào)試。
  • 盡可能使用異常處理來處理錯誤。
  • 舉例:

(1)試圖打開一個不存在的文件

try with open("non_existing_file.txt", "r") as f:
    content = f.read()

(2)捕獲文件不存在的異常

except FileNotFoundError:
    print("File not found")

6. 冗余代碼規(guī)范

  • 盡管DRY(不要重復(fù)自己)原則已經(jīng)很出名了,但它仍然是一個很好的編程實踐,可以減少冗余代碼和錯誤數(shù)量。
  • 盡可能使用現(xiàn)有的代碼或函數(shù),而不是編寫新的代碼。
  • 舉例:
if user_age < 18:
    print("You are a minor")
else:
    print("You are an adult")

不需要重復(fù)代碼

if is_minor(user_age):
    print("You are a minor")
else:
    print("You are an adult")

可以使用函數(shù)

def is_minor(age):
    return age < 18

7. 通用開發(fā)模式規(guī)范

  • 在編程實踐中盡量使用通用的設(shè)計模式,以提高代碼的可維護(hù)性。
  • 使用面向?qū)ο缶幊痰脑瓌t如高內(nèi)聚、低耦合等。
  • 舉例:
class Customer:
    def __init__(self, name, email, phone):
        self.name = name
        self.email = email
        self.phone = phone
class Order:
    def __init__(self, customer, items):
        self.customer = customer
        self.items = items

二、逸哥總結(jié)的編碼規(guī)范

以下編碼規(guī)范來自于大佬張逸的文檔資料。

1.前言

1.1編寫目的

為了保證編寫出的程序都符合相同的規(guī)范,保證一致性、統(tǒng)一性而建立的程序編碼規(guī)范。

編碼規(guī)范對于程序員而言尤為重要,有以下幾個原因:

  1. 一個軟件的生命周期中,80%的花費在于維護(hù)。
  2. 幾乎沒有任何一個軟件,在其整個生命周期中,均由最初的開發(fā)人員來維護(hù)。
  3. 編碼規(guī)范可以改善軟件的可讀性,可以讓程序員盡快而徹底地理解新的代碼 。
    每個軟件開發(fā)人員都必須遵守統(tǒng)一的編碼規(guī)范。

1.2適用范圍

本規(guī)范適用于《從零開始編寫自己的C# 框架》的開發(fā)。

1.3基本要求

盡量使代碼簡單直白。

2.命名規(guī)范

2.1字母大小寫約定

2.1.1說明
表達(dá)清晰的命名規(guī)范是程序規(guī)劃的核心,如果規(guī)范的命名能清晰的表達(dá)出相應(yīng)的功能,就可以讓人“望文知意”,提高開發(fā)效率和系統(tǒng)的可維護(hù)性。反之,如果命名不能表達(dá)其含義,例如“aaa”、“bbb ()”,那么將適得其反。
2.1.2Pascal風(fēng)格
包含一到多個單詞,每一個單詞第一個字母大寫,其余字母均小寫。例如:HelloWorld、SetName等。
2.1.3Camel風(fēng)格
包含一到多個單詞,第一個單詞首字母小寫,其余單詞首字母大寫。例如:name、productId等。

2.2標(biāo)識符的大小寫規(guī)則

(1)除了參數(shù)與變量外,所有命名空間名稱、類、函數(shù)、接口、屬性等名稱的命名,使用 Pascal 風(fēng)格。
(2)參數(shù)與變量的命名,使用Camel風(fēng)格。

2.3通用命名約定

約定的是如何選擇最適當(dāng)?shù)拿Q,這些準(zhǔn)則適用于所有標(biāo)識符命名。

2.3.1選擇名稱

(1)請選擇易讀的英文名稱
例如,英文 Order的意思為規(guī)則、次序、訂購等,如果用在排序列中就不是很合適,用來表示訂單則更具可讀性。
可讀性比詳細(xì)描述更重要,比如表示坐標(biāo)名稱ScreenX就比ScreenHorizontally 更具可讀性。

(2)除下劃線外,不要使用連字符或任何其他非字母數(shù)字字符
在數(shù)據(jù)庫表字段名稱設(shè)計時,與其他表字段有關(guān)聯(lián)時,適當(dāng)?shù)氖褂帽砻?下橫線+字段名,可以更清晰的表現(xiàn)出該字段與關(guān)聯(lián)表對應(yīng)字段的關(guān)系。
比如產(chǎn)品分類表ProductClass有字段Id與Name,那么產(chǎn)品表綁定這兩個字段的名稱可命名為ProductClass_Id與ProductClass_Name,這樣在查看產(chǎn)品表時就可以清晰的知道這兩個字段與分類表的關(guān)系。

(3)避免使用與常用編程語言的關(guān)鍵字沖突的標(biāo)識符

(4)變量和方法參數(shù)使用Camel 風(fēng)格
例如:

string productName = "";
int number=0;
string sqlString="";
double averageScore=0.0;
Users users=new Users();
Users model=new Users();
Users userModel=new Users();
const string const_String = "";(不同公司有不同的約定,具體根據(jù)自己公司情況設(shè)置而定)

	Private string GetProductName(int id)
{
		return "";
}

(5)不要使用成員屬性作為成員變量的前綴(其他變量命名也一樣)
例如: 不要像Users m_users;這樣定義成員變量,可以使用第4點的設(shè)置。

2.3.2字母縮寫詞

(1)通常,不應(yīng)使用縮寫

(2)除非這種縮寫已廣泛接受,又或者團隊當(dāng)中大家都認(rèn)可一種縮寫
例如,使用 OnButtonClick,如果團隊中普遍認(rèn)可OnBtnClick這種寫法也是可以的。

2.4命名空間命名

命名空間命名采用Pascal風(fēng)格,取名的一般規(guī)則如下。
CompanyName. ProjectName (公司名稱.項目名稱)
例如:

Microsoft.Office

需要用復(fù)數(shù)時,請使用復(fù)數(shù)。
例如,使用System.Collections而不是System.Collection。
需要縮寫時,不需要加復(fù)數(shù)。
例如:使用System.IO而不是System.IOs。

2.5類、結(jié)構(gòu)和接口命名

(1)按照 Pascal 大小寫格式,使用名詞或名詞短語為類、接口和值類型命名

(2)接口命名以字母 I 為前綴
例如:IComponent

(3)派生類的末尾使用基類名稱
例如,從 Stream 繼承的 Framework 類型以 Stream 結(jié)尾,從 Exception 繼承的類型以 Exception 結(jié)尾。

2.6邏輯層類命名

按照 Pascal 大小寫格式,使用名詞或名詞短語命名,并加上后綴Logic

2.7文件夾命名

文件夾以功能模塊名稱,按照 Pascal 大小寫格式命名。
比如后端管理功能以及權(quán)限相關(guān)功能,全部放到Systems文件夾里。

3.注釋規(guī)范

3.1模塊(類)注釋規(guī)范

模塊開始必須以以下形式書寫模塊注釋:

///<summary>
	///模塊編號:<模塊編號,可以引用系統(tǒng)設(shè)計中的模塊編號>
	///作用:<對此類的描述,可以引用系統(tǒng)設(shè)計中的描述>
	///作者:作者中文名
	///編寫日期:<模塊創(chuàng)建日期,格式:YYYY-MM-DD>
	///</summary>
	
如果模塊有修改,則每次修改必須添加以下注釋:
	///<summary>
	///Log編號:<Log編號,從1開始一次增加>
	///修改描述:<對此修改的描述>
	///作者:修改者中文名
	///修改日期:<模塊修改日期,格式:YYYY-MM-DD>
	///</summary>

3.2類屬性注釋規(guī)范

在類的屬性必須以以下格式編寫屬性注釋:

/// <summary>
	///屬性說明
/// </summary>

3.3方法注釋規(guī)范

在類的方法聲明前必須以以下格式編寫注釋

/// <summary>
	/// 說明:<對該方法的說明>
	/// </summary>
	/// <param name="<參數(shù)名稱>"><參數(shù)說明></param>
/// <returns>
///<對方法返回值的說明,該說明必須明確說明返回的值代表什么含義>
/// </returns>

3.4代碼間注釋規(guī)范

代碼間注釋分為單行注釋和多行注釋:
單行注釋:

//<單行注釋>

多行注釋:

/*多行注釋1
多行注釋2
多行注釋3*/

代碼行數(shù)太多而不容易區(qū)分時注釋:

	/******************************************
	 *	代碼塊功能名稱
	 ******************************************/
//<單行注釋>/*多行注釋1
	多行注釋2*/

或者也可以使用下面方法:

/********* 代碼塊功能名稱開始 ************/
//<單行注釋>
//<單行注釋>
/********* 代碼塊功能名稱結(jié)束 ************/

注釋說明
A. 代碼中遇到語句塊時必須添加注釋(if,for,foreach,……),添加的注釋必須能夠說明此語句塊的作用和實現(xiàn)手段(所用算法等等)。 對一個數(shù)值變量采用不是0,-1等的數(shù)值初始化,給出選擇該值的理由。
B. 盡量多點注釋,就算能一目了然的命名最好也順便寫一寫注釋,方便以后接收的人能更容易理解程序(方便不太懂英文的程序員)。
C. 如果因為某種原因使用了復(fù)雜艱澀的原理,為程序配備良好的文檔和更多的注釋。

4.編碼規(guī)范

1)縮進(jìn)和間隔:縮進(jìn)用TAB,不用 SPACES。

2)注釋需和代碼對齊。多使用#regedit和#endregion代碼塊。

3)在代碼中垂直對齊左括號和右括號。

if (x == 0)
{
	Response.Write("用戶編號必須輸入!");
}
    不允許以下情況:
if(x == 0) {
	Response.Write("用戶編號必須輸入!");
}

或者:

if(x == 0){ Response.Write("用戶編號必須輸入!"); }

4)適當(dāng)?shù)脑黾涌招?,來增加代碼的可讀性。
在下列情況下應(yīng)該有兩行空行:
? 同一文件的不同部分之間;
? 在類,接口以及彼此之間;
在下列情況之間應(yīng)該有一行空行:
? 方法之間;
? 局部變量和它后邊的語句之間;
? 方法內(nèi)的功能邏輯部分之間;

5)避免使用大文件。如果一個文件里的代碼超過300~400行,必須考慮將代碼分開到不同類中。當(dāng)然模板生成類與邏輯層類除外。

6)避免寫太長的方法。一個典型的方法代碼在1~25行之間。如果一個方法發(fā)代碼超過25行,應(yīng)該考慮將其分解為不同的方法。

7)為了防止在閱讀代碼時不得不滾動源代碼編輯器,每行代碼或注釋在1024*768的顯示頻率下不得超過一顯示屏

8)在大多數(shù)運算符之前和之后使用空格,這樣做時不會改變代碼的意圖卻可以使代碼容易閱讀。
例:

int j = i + k;  
而不應(yīng)寫為
int j=i+k;
括號和它里面的字符之間不應(yīng)該出現(xiàn)空格。括號應(yīng)該和它前邊的關(guān)鍵詞留有空格。
例:
while (true) 
{

};

但是方法名和左括號之間不應(yīng)該有空格。
參數(shù)之間的逗號后應(yīng)該加一空格。
例:

method1(int i1, int i2)

for語句里的表達(dá)式之間加一空格。
例:

for(expr1; expr2; expr3)

強制類型轉(zhuǎn)換時,在類型和變量之間加一空格。
例:

(int) i ; 

9)所有可供用戶輸入的字段值,必須需忽略前后空白后(不包含密碼);在對字段值進(jìn)行有效性驗證。對提交進(jìn)數(shù)據(jù)庫的內(nèi)容必須進(jìn)行SQL注入過濾與XSS過濾。

10)一個方法只完成一個任務(wù)。不要把多個任務(wù)組合到一個方法中,即使那些任務(wù)非常小。

11)避免使用很多成員變量,聲明局部變量,并傳遞給方法。

12)不要在方法間共享成員變量,如果在幾個方法間共享一個成員變量,那就很難知道是哪個方法在什么時候修改了它的值。

13)不在代碼中使用具體的路徑和驅(qū)動器名,使用相對路徑,并使路徑可編程。永遠(yuǎn)別設(shè)想你的代碼是在“C:”盤運行。你不會知道,一些用戶在網(wǎng)絡(luò)或“Z:”盤運行程序。

14)應(yīng)用程序啟動時作些“自檢”并確保所需文件和附件在指定的位置。
如果需要的配置文件找不到,應(yīng)用程序需能自己創(chuàng)建使用默認(rèn)值的一份。如果在配置文件中發(fā)現(xiàn)錯誤值,應(yīng)用程序要拋出錯誤,給出提示消息告訴用戶正確值。

15)出現(xiàn)任何問題給用戶一個友好的提示,錯誤消息需能幫助用戶解決問題。
永遠(yuǎn)別用像“應(yīng)用程序出錯”,“發(fā)現(xiàn)一個錯誤”等錯誤消息。而應(yīng)給出像“更新數(shù)據(jù)庫失敗,請確保登陸id和密碼正確” 的具體消息。顯示錯誤消息時,除了說哪里錯了,還應(yīng)提示用戶如何解決問題。不要用像“更新數(shù)據(jù)庫失敗”這樣的,要提示用戶怎么做:“更新數(shù)據(jù)庫失敗,請確保登陸id和密碼正確”

16)錯誤處理和異常事件
不要“捕捉了異常卻什么也不做”。如果隱藏了一個異常,你將永遠(yuǎn)不知道異常到底發(fā)生了沒有。
發(fā)生異常時,給出友好的消息給用戶,但要精確記錄錯誤的所有可能細(xì)節(jié),包括發(fā)生的時間,和相關(guān)方法,類名等。

別寫太大的 try-catch 模塊。如果需要,為每個執(zhí)行的任務(wù)編寫單獨的 try-catch 模塊。 這將幫你找出哪一段代碼產(chǎn)生異常,并給用戶發(fā)出特定的錯誤消息
如果應(yīng)用程序需要,可以編寫自己的異常類。自定義異常不應(yīng)從基類SystemException派生,而要繼承于. IApplicationException。文章來源地址http://www.zghlxwxcb.cn/news/detail-447615.html


到了這里,關(guān)于【軟件工程】軟件設(shè)計中的通用編碼規(guī)范的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 軟件設(shè)計師(五)軟件工程基礎(chǔ)知識

    軟件設(shè)計師(五)軟件工程基礎(chǔ)知識

    軟件開發(fā)和維護(hù)過程中所遇到的各種問題稱為“軟件危機”。 軟件工程是指應(yīng)用計算機科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,以工程化的原則和方法來解決軟件問題的工程,其目的是提高軟件生產(chǎn)率、提高軟件質(zhì)量、降低軟件成本。 計算機軟件是指計算機系統(tǒng)中的程序及其文檔。

    2024年02月14日
    瀏覽(25)
  • 軟件工程(十一) 系統(tǒng)設(shè)計分類

    我們知道需求規(guī)格說明書(SRS)落地之后, 就要開始著手系統(tǒng)設(shè)計了,看一下這個系統(tǒng)該如何來設(shè)計,并且如何實現(xiàn)。學(xué)習(xí)系統(tǒng)設(shè)計之前,需要先了解系統(tǒng)設(shè)計有哪些分類。 系統(tǒng)設(shè)計的分類如下 界面設(shè)計 結(jié)構(gòu)化設(shè)計 面向?qū)ο笤O(shè)計( 最重要 ) 界面設(shè)計也叫做人機界面設(shè)計,屬

    2024年02月11日
    瀏覽(29)
  • 軟件工程畢業(yè)設(shè)計框架

    當(dāng)進(jìn)行軟件工程畢業(yè)設(shè)計時,以下是一個基本的框架,供你參考: 1. 項目選題和需求分析 確定一個合適的項目選題,可以是一個實際問題的解決方案或一個新的軟件系統(tǒng) 進(jìn)行需求分析,明確項目的功能和目標(biāo) 2. 系統(tǒng)設(shè)計和架構(gòu) 設(shè)計系統(tǒng)的整體架構(gòu),包括模塊劃分和組件設(shè)

    2024年02月11日
    瀏覽(21)
  • 【中級軟件設(shè)計師】—(針對上午題)軟件工程上(三十五)

    【中級軟件設(shè)計師】—(針對上午題)軟件工程上(三十五)

    環(huán)的個數(shù)=閉合區(qū)域+ 1,上圖環(huán)的個數(shù)為:2+1=3 注意:每個邊都應(yīng)該有兩個結(jié)點相對應(yīng),不懂看B站軟件工程上視頻 P95集 需要2個測試用例 答案:B D 答案:A C 系統(tǒng)可維護(hù)性的評價指標(biāo):理解、測試、修改 D 選項:在軟件工程的每一個階段都應(yīng)考慮并提高軟件的可維護(hù)性 B選項:

    2024年02月04日
    瀏覽(36)
  • 系統(tǒng)架構(gòu)設(shè)計師-軟件工程(4)

    系統(tǒng)架構(gòu)設(shè)計師-軟件工程(4)

    目錄 一、軟件測試 ????????1、軟件測試類型(動態(tài)測試 / 靜態(tài)測試) ? ? ? ? ? ? ? ? 1.1 動態(tài)測試【計算機運行】? ????????????????1.2 靜態(tài)測試【人工監(jiān)測和計算機輔助分析】 ????????2、軟件測試階段 ????????3、軟件系統(tǒng)測試 二、遺留系統(tǒng)演化策略

    2024年02月13日
    瀏覽(90)
  • 系統(tǒng)架構(gòu)設(shè)計師-軟件工程(1)

    系統(tǒng)架構(gòu)設(shè)計師-軟件工程(1)

    目錄 一、軟件過程模型?????? ? ? ? ? 1、瀑布模型 ? ? ? ? 2、V模型【瀑布變種】 ? ? ? ? 3、原型模型 ? ? ? ? 4、螺旋模型【原型+瀑布】 ? ? ? ? 5、構(gòu)件組裝模型/基于構(gòu)件的開發(fā)方法 ? ? ? ? 6、快速應(yīng)用開發(fā)RAD【瀑布+構(gòu)件組裝】???????????????? ? ? ? ?

    2024年02月11日
    瀏覽(95)
  • 系統(tǒng)架構(gòu)設(shè)計師-軟件工程(2)

    系統(tǒng)架構(gòu)設(shè)計師-軟件工程(2)

    目錄 一、需求工程? ? ? ? ? 1、需求工程階段劃分 ? ? ? ? 2、需求獲取 ? ? ? ? 3、需求分析? ? ? ? ? 4、需求定義(形成需求規(guī)格SRS) ????????5、需求確認(rèn)與驗證 ? ? ? ? 6、需求跟蹤????????????????? ? ? ? ? 7、需求變更管理過程 ? ? ? ? 1、需求工程階

    2024年02月12日
    瀏覽(25)
  • 軟件工程中的人工智能:如何提高開發(fā)效率

    隨著人工智能技術(shù)的發(fā)展,人工智能在軟件工程領(lǐng)域的應(yīng)用也越來越廣泛。人工智能可以幫助軟件工程師更高效地進(jìn)行軟件開發(fā),提高開發(fā)效率。在這篇文章中,我們將討論人工智能在軟件工程中的應(yīng)用,以及如何利用人工智能提高開發(fā)效率。 軟件工程是一項復(fù)雜的技術(shù),涉

    2024年02月21日
    瀏覽(21)
  • [架構(gòu)之路-263]:目標(biāo)系統(tǒng) - 設(shè)計方法 - 軟件工程 - 軟件設(shè)計 - 概要設(shè)計 - 綜述、如何做概要設(shè)計、概要設(shè)計的內(nèi)容

    目錄 一、概要設(shè)計綜述 1.1 什么是概要設(shè)計 1.2 概要設(shè)計的目標(biāo) 1.3 軟件概要設(shè)計與軟件架構(gòu)設(shè)計的比較 1.4 軟件概要設(shè)計、軟件架構(gòu)、軟件詳細(xì)設(shè)計比較 二、如何做好概要設(shè)計 2.1 概要設(shè)計的入手點 2.2 概要設(shè)計的步驟 2.3?進(jìn)行概要設(shè)計的注意事項 三、軟件概要設(shè)計的內(nèi)容

    2024年03月10日
    瀏覽(28)
  • 軟件工程畢業(yè)設(shè)計選題100例(一)

    軟件工程畢業(yè)設(shè)計選題100例(一)

    ?? 這兩年開始畢業(yè)設(shè)計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的java web缺少創(chuàng)新和亮點,往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長自己做的java web管理系統(tǒng)達(dá)不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長分享5個優(yōu)質(zhì)java web畢業(yè)設(shè)計

    2024年02月08日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包