當用Java編程時,我顯然會將相關代碼保存在類中,組織類結構,層次結構等以最大限度地重用代碼。從Java過渡到C代碼組織
現在我開始使用C了,對於以模塊化方式組織C代碼的最佳方法有點困惑。很明顯,我知道頭文件和源文件,但是在C中最大程度地重用代碼時有點不知所措。
那麼,人們如何用C這樣的語言來組織他們的代碼,這顯然不支持OOP。
當用Java編程時,我顯然會將相關代碼保存在類中,組織類結構,層次結構等以最大限度地重用代碼。從Java過渡到C代碼組織
現在我開始使用C了,對於以模塊化方式組織C代碼的最佳方法有點困惑。很明顯,我知道頭文件和源文件,但是在C中最大程度地重用代碼時有點不知所措。
那麼,人們如何用C這樣的語言來組織他們的代碼,這顯然不支持OOP。
這兩種語言的不同之處在於Java是更現代,設計用於OOP
C是年齡大了,是,是一個proceedural語言。由於語言不同,我們編程的方式通常不同,佈局也不同。
C程序在.h文件中包含頭文件(和函數原型),在.c文件中包含函數代碼。
就模塊性而言,您仍然可以按照與代碼類似的方式來遵循類似的模式。一般的經驗法則是一個文件應該做一件事,即string_parser.c應該只處理字符串解析。 list_sorter.c應該處理列表排序等。
在代碼重用方面 - 像「實用程序」文件這樣的東西很好,所以可重用的有用代碼可以放在一個C文件中幷包含在需要的地方。你不應該在C中複製代碼,所以如果你發現自己的複製/粘貼功能把它放在一個集中的文件中,並將它包含在多個地方。
寫通用函數!保持你的功能簡單並開放,使它們不那麼具體,這樣你可以重用你的功能。
我的建議是記住你的Java代碼佈局知識,但也要檢查一個好的C指南。 http://www.doc.ic.ac.uk/lab/cplus/cstyle.html
一般好的項目設計將幫助您計算項目的文件佈局/結構。
對不起,過了漫漫長夜。 – FaddishWorm
@FaddishWorm我認爲這就是你的意思。漫長的夜晚吧?我知道一個。 –
@VisionIncision yea大周,令人心寒的試圖擺脫咖啡因高的堆棧:P – FaddishWorm
說到Java
和C
之間的主要風格差異我想說這不是OOP的缺席。
一般認爲C只是關於'just older'語言。它是完全不同的語言,其性質完全不同。假設Java在處理低級別方面並不是很完美,並且總是這樣,因爲Java旨在爲應用程序開發人員提供安全性。 C沒有這樣的可用性,但授予你更多的權力控制權。
關於Java的C
的主要優勢是接口和實現之間的距離。只是說明:當你有頭時,實際上你有接口的概念,它確實是接口。您可以根據標頭鏈接完全不同的模塊實現相同的接口。那麼,你不會有語言控制這些事情:-),他們真的不安全。感受與Java的不同之處。
在C中,您可以基於具有指向函數類型指針的結構實現OOP方法。更多,這樣你就會收到'運行時靈活的OOP'之類的東西,因爲這個綁定是初始化或運行時更改的主體。它近乎反思......但更快更危險。
如果您尋找良好的C最佳實踐,請檢查Linux內核源代碼。此代碼按照現代C最佳實踐進行演變,可能是高質量的大型C項目的最佳例證。
希望這會有所幫助。
我傾向於認爲是這樣的:
示例頭文件:
struct CARLIB_Car_s;
void CARLIB_Car_Drive(struct CARLIB_Car_s *pCar, uint16_t KiloMeters);
示例源文件:
struct CARLIB_Car_s {
uint16_t FuelLeft;
};
void CARLIB_Car_Drive(struct CARLIB_Car_s *pCar)
{
// ...
}
我沒有看到上面的文章,但認爲這個問題是正當的,因爲我要求的代碼組織技術一種用於諸如Java的語言。過渡技巧,就像它一樣。 –