Re: [請益] coding style差太多怎辦?
原Po 研究過 Allman Style , K&R style, GNU style
還有 ISO c99 c++2011 c++2014 c++2022
實際撰寫過 Linux kernel, Zephyr, Android framework & App, Python3 for AI
Scala for Risc-V, IOS Object-C .m .mm, tracing gcc source, C#, Inline assembly
buildroot, bash, Makefile
拜讀過大師 Weinberg 的程式心理學 The Psychology of Computer Programming
另有 系統開發思惟 An Introduction to General Systems Thinking
也撰寫過完整的 Hungarian notation 語義學 分析 和 它的歷史
//
這是有發過文的
int a=1,b=2,c=3;
if(a)
{
a=1;
if(b)
{
b=1;
if(c)
{
c=1;
}
}
}
////////////////
int a=1,b=2,c=3;
if(!a)
{
return;
}
a=1;
if(!b)
{
return;
}
b=1;
if(!c)
{
return;
}
c=1;
上下那一段的 coding style 好些?
不管選上或選下 你可以有一百種理由
但當我轉換到 asm 時 你就知道原因
push %rbp
mov %rsp,%rbp
int a=1,b=2,c=3;
movl $0x1,-0xc(%rbp)
movl $0x2,-0x8(%rbp)
movl $0x3,-0x4(%rbp)
if(a)
cmpl $0x0,-0xc(%rbp)
je 0x555555555e7f <teseMe1()+64>
a=1;
movl $0x1,-0xc(%rbp)
if(b)
cmpl $0x0,-0x8(%rbp)
je 0x555555555e7f <teseMe1()+64>
b=1;
movl $0x1,-0x8(%rbp)
if(c)
cmpl $0x0,-0x4(%rbp)
je 0x555555555e7f <teseMe1()+64>
c=1;
movl $0x1,-0x4(%rbp)
//
push %rbp
mov %rsp,%rbp
int a=1,b=2,c=3;
movl $0x1,-0xc(%rbp)
movl $0x2,-0x8(%rbp)
movl $0x3,-0x4(%rbp)
if(!a)
cmpl $0x0,-0xc(%rbp)
je 0x555555555ec4 <teseMe2()+66>
a=1;
movl $0x1,-0xc(%rbp)
if(!b)
cmpl $0x0,-0x8(%rbp)
je 0x555555555ec7 <teseMe2()+69>
b=1;
movl $0x1,-0x8(%rbp)
if(!c)
cmpl $0x0,-0x4(%rbp)
je 0x555555555eca <teseMe2()+72>
c=1;
movl $0x1,-0x4(%rbp)
jmp 0x555555555ecb <teseMe2()+73>
return;
nop
jmp 0x555555555ecb <teseMe2()+73>
return;
nop
jmp 0x555555555ecb <teseMe2()+73>
return;
nop
現在你可以看得出來代碼的數量....心裡也有答案了
這是開放性的解答
/////////
想要制定coding style的人或主管 必先要學會自省的功夫
1. 自己有嘗試過 別人寫的style 一天或一週嗎?
還是我只是將某個我習慣的style 強加在別人身上
2. 我有試過 新的coding style嗎?
3. 我有試過 各種不同的語言嗎?
99%的人 在制定coding style的人 沒有這3點的自省~~~
他也沒有考慮過 語義學 心理學 在coding style的影響
把時間耗在 定名字 定括號 導到工程師實際上花了三倍的時間
在view code 沒有時間去 思惟 整個架構的安全性 速度 cpu & memory 負載量
要打磨的是畫作 不是畫框
看過python3的人都知 if else. 括號? 我根本不用考慮這東西!!!
制定的 coding style 能使c/c++ 轉到 python 的人 在跨語上 更容易讀懂嗎?
一個好的 coding style 制定者 會自省
使用大腦使用最少的組合 或 拆解次數 做為制定方針
把更多的時間 放在對的地方~~~
如果說目前最常用的組譯器
gcc g++ arm-linux-gcc aarcg64-linux-gcc gdb gdbserver
they are all released by GNU 或 經過修改過
https://ftp.gnu.org/gnu/gcc
那使用組譯器最易懂的 style 會不會是最好的呢?
答案當然是 不會只有某一種style 是最好的
你可以 考上述原因 融合各種 style 創立最適合 自己團隊的!!!
未來的主管們 請多想想 你是怎麼制定 coding style的~~~~
※ 引述《prag222 (prag)》之銘言:
: 大家好
: 小弟上上份工作快離職前
: 聽到新進的同事說
: 他都習慣把程式寫成一個一個小的function
: 後來離職我花了一點時間學習設計模式
: 和了解SOLID原則
: 我越覺得這種作法很OK
: 我大概也知道這應該是重複說高手說過的話
: 所以後來找到工作
: 專案自己一個人開發
: 也沒主管強制要求程式該怎麼寫
: 變照著 之前同事說的話去開發
: 讓程式碼 程式碼也是有結構性架構性的
: 而不是一個function寫幾百行幾千行
: mvc Model層也是切得很乾淨
: Model層寫的就像api
: controller帶參數給MODEL層撈資料出來
: 不過我最近的公司
: 完全不是這種做法
: 雖然是MVC不過還是下SQL查出資料
: 看到function寫幾百行我看了就昏(業務邏輯)
: 為了符合公司專案的coding style有點辛苦
: 基本上我速度也差不多折損一半也有了
: 不過盡可能把程式碼寫成一個一個小單元應該也沒錯吧
: 畢竟單元測試
: 跟我最近看重構的書也是建議這樣
: 上份工作有改到open source的專案
: 好像也是這樣
: 是很難看的懂 但擴充維護修改都很輕鬆
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.93.159 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1679378684.A.DAD.html
→
03/21 14:33,
1年前
, 1F
03/21 14:33, 1F
→
03/21 14:46,
1年前
, 2F
03/21 14:46, 2F
好客戶 如果薪水先發 那就更好了~~~
※ 編輯: fatalfeel2 (114.32.93.159 臺灣), 03/21/2023 14:49:53
→
03/21 15:09,
1年前
, 3F
03/21 15:09, 3F
→
03/21 15:09,
1年前
, 4F
03/21 15:09, 4F
推
03/21 15:21,
1年前
, 5F
03/21 15:21, 5F
→
03/21 15:23,
1年前
, 6F
03/21 15:23, 6F
推
03/21 15:23,
1年前
, 7F
03/21 15:23, 7F
→
03/21 15:24,
1年前
, 8F
03/21 15:24, 8F
→
03/21 16:05,
1年前
, 9F
03/21 16:05, 9F
→
03/21 16:17,
1年前
, 10F
03/21 16:17, 10F
→
03/21 16:18,
1年前
, 11F
03/21 16:18, 11F
→
03/21 16:19,
1年前
, 12F
03/21 16:19, 12F
→
03/21 16:19,
1年前
, 13F
03/21 16:19, 13F
→
03/21 16:20,
1年前
, 14F
03/21 16:20, 14F
推
03/21 16:21,
1年前
, 15F
03/21 16:21, 15F
→
03/21 16:21,
1年前
, 16F
03/21 16:21, 16F
推
03/21 16:33,
1年前
, 17F
03/21 16:33, 17F
推
03/21 16:43,
1年前
, 18F
03/21 16:43, 18F
推
03/21 17:43,
1年前
, 19F
03/21 17:43, 19F
→
03/21 18:16,
1年前
, 20F
03/21 18:16, 20F
→
03/21 19:02,
1年前
, 21F
03/21 19:02, 21F
→
03/21 19:03,
1年前
, 22F
03/21 19:03, 22F
→
03/21 19:04,
1年前
, 23F
03/21 19:04, 23F
→
03/21 19:04,
1年前
, 24F
03/21 19:04, 24F
→
03/21 19:05,
1年前
, 25F
03/21 19:05, 25F
→
03/21 19:06,
1年前
, 26F
03/21 19:06, 26F
→
03/21 19:06,
1年前
, 27F
03/21 19:06, 27F
→
03/21 19:14,
1年前
, 28F
03/21 19:14, 28F
→
03/21 19:14,
1年前
, 29F
03/21 19:14, 29F
→
03/21 19:14,
1年前
, 30F
03/21 19:14, 30F
→
03/21 20:43,
1年前
, 31F
03/21 20:43, 31F
→
03/21 20:45,
1年前
, 32F
03/21 20:45, 32F
→
03/21 20:47,
1年前
, 33F
03/21 20:47, 33F
→
03/21 20:49,
1年前
, 34F
03/21 20:49, 34F
→
03/21 20:50,
1年前
, 35F
03/21 20:50, 35F
推
03/21 23:27,
1年前
, 36F
03/21 23:27, 36F
→
03/21 23:27,
1年前
, 37F
03/21 23:27, 37F
→
03/21 23:28,
1年前
, 38F
03/21 23:28, 38F
推
03/22 01:19,
1年前
, 39F
03/22 01:19, 39F
→
03/22 01:19,
1年前
, 40F
03/22 01:19, 40F
→
03/22 01:19,
1年前
, 41F
03/22 01:19, 41F
推
03/22 01:25,
1年前
, 42F
03/22 01:25, 42F
→
03/22 01:25,
1年前
, 43F
03/22 01:25, 43F
→
03/22 02:05,
1年前
, 44F
03/22 02:05, 44F
→
03/22 07:58,
1年前
, 45F
03/22 07:58, 45F
推
03/22 09:02,
1年前
, 46F
03/22 09:02, 46F
推
03/22 09:36,
1年前
, 47F
03/22 09:36, 47F
→
03/22 09:53,
1年前
, 48F
03/22 09:53, 48F
推
03/22 12:24,
1年前
, 49F
03/22 12:24, 49F
→
03/23 21:18,
1年前
, 50F
03/23 21:18, 50F
→
03/23 21:18,
1年前
, 51F
03/23 21:18, 51F
→
03/24 11:43,
1年前
, 52F
03/24 11:43, 52F
→
03/24 11:43,
1年前
, 53F
03/24 11:43, 53F
推
03/24 14:38,
1年前
, 54F
03/24 14:38, 54F
推
03/24 16:56,
1年前
, 55F
03/24 16:56, 55F
討論串 (同標題文章)
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章
133
157