※ 本文為 qrtt1.bbs. 轉寄自 ptt.cc 更新時間: 2012-04-28 23:02:02
看板 C_and_CPP
作者 標題 [分享] 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
減少參考其他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 累積人氣: 4152
( ̄︶ ̄)b a0938550310 說讚!
1樓 時間: 2015-05-29 22:50:47 (台灣)
→
05-29 22:50 TW
大大你好 目前你還在使用c++嗎? 如果還有在使用的話麻煩大大來信一下有c++上的問題想請教大大
→
guest
回列表(←)
分享