顯示廣告
隱藏 ✕
※ 本文為 qrtt1.bbs. 轉寄自 ptt.cc 更新時間: 2012-04-28 23:02:02
看板 C_and_CPP
作者 calais007 (淺水中)
標題 [分享] C/C++語言工作上的心得
時間 Sat Apr 28 22:55:17 2012


各位板友大家好
小弟工作經驗約3年多
寫程式從高中到工作約有10幾年的經驗
工作上主要使用的語言是C或是C++
小弟待過系統廠和IC Design廠
今天來分享我在業界看到的一些現在和我個人的想法
也許不一定正確
但也許可以給學子門一些軟工上的啟發
先說我在系統廠上的經驗
我之前是在網通廠
使用的Broadcom的solution
Broadcom的程式碼主要是用C++為主
它的程式有幾個特色
1. 非常少使用指標, 除了DMA之外可以說沒有用到指標
2. 自己實作Buffer class來配置記憶體, 解構子處理的很好
   只要使用Buffer class就可以輕鬆配置memory,不會memory leak
   (前題是你不要傻傻的去new buffer class)
3. 大量使用singleten
4. 在C++裡面不會出現global variable, 所有的東西一律抽象化(class化)
5. 程式寫作一致,很容易閱讀

換了工作後到了台廠IC design
我看完了code我發現台灣的軟工跟Broadcom一比起來還有一段差距
我舉幾個我看到的現像
1. makefile格式不統一,到處都有放,要花很多時間來搞清楚先後順序

2. shared library沒有好好管理,我個人的看法是shared library要儘量做到local化
   減少參考其他shared library的,但我居然發現有出現shared libray互相reference
   對方的詭異現象,這很明顯是link library的時候沒有clean build,然後binary

   release.

3. 亂用pointer,也許定API或interface的人很強,但實作的人卻普普或是根本不懂這個
   指標要幹麻, 我舉個例子好了

   //@param out_b : pass a pointer and return an allocate space to pointer
   //               out_b
   void myFunc(void *in_b, uint32 in_len, void *out_b, uint32 *out_len)

   我看了這段code之後我直覺就想到這個會動嗎?這只會memory leak吧
   為什麼要pass一個pointer到function裡面malloc,還是pass一個void *
   而不是pass void **? 為什麼要幫人製造大便?大便不是自己做自己清嗎?

4. void *很好很強大, 但不要走火入魔.
   我舉個例子
   void setDataStruct(void *struct)
   {
      XXX_type myType= (XXX_type*) struct;
   }
   看起來沒啥問題,問題是用setDataSturct的人居然可以不知道XXX_type的結構
   設計者所說他不希望到處放.h檔,所以這樣用?我聽了內心只有一聲"X"

5. 非必要不要自己造輪子
   一個最多只有32個element的struct為什麼要寫linkedlist
   宣告MAX_LENGTH 64就很夠用了吧, 比較省記憶體?
   stack都用不完了為什麼要用heap? 還有memory leak的風險咧

6. goto很好很強大, 拿來error handler非常好, 但每的function都這樣用
   讓我感受到大量使用goto只顯示你寫code malloc了太多大便, 導致
   一定要goto來清大便, 不懂為什麼要到處拉屎, 能用array就array為什麼
   要用pointer來顯示自己的高級?

7. 給我為什麼一定要用C語言的理由, 除非是3rd的code是C++,不然很多人都排斥
   C++, 這一點我不懂, C++有更好的container, STL, destructor, safe pointer,
   oop, 更嚴格的type check, 不使用它的理由是?

8. 程式一堆warning, compiler都看不下去了還給人看....

其實還有一堆
但目前想不起來
希望大家寫的code不要變成這樣

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.135.55
※ 編輯: calais007       來自: 114.37.135.55        (04/28 22:56)

--
※ 看板: Soft_Job 文章推薦值: 1 目前人氣: 0 累積人氣: 4150 
分享網址: 複製 已複製
( ̄︶ ̄)b a0938550310 說讚!
1樓 時間: 2015-05-29 22:50:47 (台灣)
  05-29 22:50 TW
大大你好 目前你還在使用c++嗎? 如果還有在使用的話麻煩大大來信一下
有c++上的問題想請教大大
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇