程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 怎樣更好更快的進行C++代碼編制

怎樣更好更快的進行C++代碼編制

編輯:C++入門知識

對第一次接觸到C++代碼編制的用戶和學者來說,了解C++語言的概念是非常重要的,那麼就先說一下什麼是C++語言,所謂C++語言:是一種使用非常廣泛的計算機編程語言。

在我們的實際開發中,常常以拷貝C++代碼的方式來復用代碼。這包括某段代碼的拷貝,或者是幾個文件的拷貝。我倒是要提出一個我認為最基本的編碼原則:原則6 除非萬不得已,永遠也不要拷貝代碼。

如果我們把代碼在一個工程內部進行拷貝,說明這個工程內部有部分代碼必然是重復的。作為高效率的開發者,為何要編寫重復的代碼,而不直接復用他們呢?這說明代碼的設計有問題,或者是開發人員出於一時的方便起見,做出了敷衍的操作。

如果我們把C++代碼在一個工程拷貝到另外一個工程。說明我們實際上已經寫出了可以在工程之間通用的代碼。這樣的代碼,是經過至少一個工程的考驗的,我們為何不直接使用它們,而要另外拷貝一份呢?代碼的拷貝,至少有以下幾個缺點:

1. 如果這份代碼是沒有bug的。那麼在拷貝過程中,可能出現bug。

2. 如果這份代碼是有bug的,那麼在拷貝過程中,bug也被復制了。bug會傳染到其他的工程組件,甚至其他的工程項目中。

所謂的代碼復用,我打算給出一個定義如下:

  1. bool check( const vector< condition * > &conditions)
  2.  {
  3.  unsigned int i; bool result = true; for(i=0;i<conditions.size();++i) 
  4. { if(conditions[i]->check_type == “Hardware”) resulte &&= HardwareCheck(condition->param1,condition->param2); 
  5. else if(conditions[i]->check_type == “Registry”) resulte &&= RegistryCheck(condition->param1,condition->param2); 
  6. else if(conditions[i]->check_type == “OS”) resulte &&= OSCheck(condition->param1,condition->param2); 
  7. else if(conditions[i]->check_type == “Process”) resulte &&= ProcessCheck(condition->param1,condition->param2); … … } }  

以上的if … else if不但難看而且長。更重要的是,這非常的沒有可擴展性。這個check組件,必須依賴於一系列的實現非常復雜的模塊,比如HardwareCheck, RegisterCheck, OsCheck, ProcessCheck,沒有其中任何一個的實現就無法操作。實施上,這個check是沒有任何可復用性的。

此外,如果Log.c中還#include了def.h,那注定不能被輕易的“拷貝”。這處於工程開發階段的一個方便的考慮:假設我把所有的頭文件、宏定義、或者函數聲明都包含在一個叫做 def.h的頭文件中。那麼,我編寫C++代碼的時候會非常方便,一般只要#include “def.h”就可以了,不用擔心任何缺少頭文件之類的問題。

  1. C與C++中標准輸入實現方式上的一點區別
  2. C++編譯器如何對Const常量進行分配存儲空間
  3. C++類庫設計的基本構思與方法
  4. 玩轉C++語言的幾種方法
  5. 如何更好的進行C++代碼編制

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved