[綜合]無題 無名 ID:ZnuocCOA 2019/01/08(二) 10:19:36.047 No.13553376 評分:0, 年:0, 月:0, 週:0, 日:0, [+1 / -1] 最後更新:2019-01-08 17:50:57
資工島民早點名
無題 無名 ID:ZnuocCOA 2019/01/08(二) 10:22:06.413 No.13553389 工作上曾被主管批評程式碼可讀性太差
命名不佳
那到底怎樣才算"好"的程式碼?
馬的我明明已經寫的很有條理了啊
無題 無名 ID:Dy4Mutc. 2019/01/08(二) 10:23:42.730 No.13553398 無題 無名 ID:pYhVMdvE 2019/01/08(二) 10:31:59.624 No.13553446 >>13553403NO,如果環境跟屎一樣你這樣反而沒進步。
所謂的好的程式碼有幾個要素,也不一定要跟著PATTERN走。
要素有
1.不需大量的註釋也可以藉由命名隱喻得知處理邏輯
2.適可而止的邏輯抽象
3.恰到好處的單一檔案程式碼行數
4.恰到好處的單一行程式字元數
5.沒有他媽該死的Region
6.有可被檢驗為何如此設計程式架構的原因
7.三個月後你本人回來看該段程式可以10分內搞懂當初緣由
簡單來說就是你可以將你的程式文章化,敘述出你的主體脈絡。
粗乃丸(響子嘆氣).jpg
無題 無名 ID:0MLP.YbA 2019/01/08(二) 10:32:17.895 No.13553449
無題 無名 ID:pGaSe.MY 2019/01/08(二) 10:32:24.363 No.13553450
無題 無名 ID:Es.vAXmY 2019/01/08(二) 10:33:06.991 No.13553456
無題 無名 ID:pYhVMdvE 2019/01/08(二) 10:38:53.665 No.13553502 >>13553446另外有一點是很多自認資訊高手的人常忽略的一點
->【使用自己才看得懂的技巧】
奉勸有自認高手或是自豪於此的同業趁早改掉此習慣才能讓大家活的順順遂歲平平安安。
PS:環境的能容許的程度如何,就盡可能不要使用太超越的知識,對大家都好。
粗乃丸(大吉嶺喝百事可樂).jpg
無題 無名 ID:Dy4Mutc. 2019/01/08(二) 10:48:47.071 No.13553583 >>13553406謝謝ㄛ,從上個月約好面試後,好多人勸過我ㄌ
我覺得不管有沒有遊戲魂,有沒有面上,面雷亞會是很棒ㄉ經驗ㄅ,尤其在情懷面
薪資ㄉ話倒是不太要求,前陣子做remote已經存一點ㄌ
覺得單想靠寫code存錢ㄉ話,做洋人code便器存錢速度還是挺不錯ㄉ
無題 無名 ID:ZnuocCOA 2019/01/08(二) 10:50:23.648 No.13553603 >>13553502你講這我可以理解
但是"自己才看得懂的技巧"我認為是語言外的技術才叫看不懂
例如大家都用C++寫程式
我就引入python來幫忙
這導致別人看不懂我寫啥
這是我的錯
但我寫的都是C++語法 甚至用的標準庫是98就有的
那看不懂還要怪我嗎?
主管自己寫的古老marco技巧我就看的懂
看不懂就查一下去搞懂
這樣才是正確的態度吧?
無題 無名 ID:pYhVMdvE 2019/01/08(二) 10:53:00.638 No.13553619 >>13553603不對喔,在你幹掉你主管之前,整個部門還是以你主管當作窗口。
從這個角度去思考我想你應該可以找到你的問題點。
粗乃丸(響子掛柚子).jpg
無題 無名 ID:8g/b4pps 2019/01/08(二) 10:55:14.303 No.13553631
for(int l=1/*counter*/;l<11;l++)
無題 無名 ID:pYhVMdvE 2019/01/08(二) 10:57:09.940 No.13553642
>>13553583薪資不要求?這種屁話勸你改掉才能挑戰真正應有的所得與對應的能力。
粗乃丸(杹-怒).jpg
無題 無名 ID:QcuhLvPs 2019/01/08(二) 10:59:20.852 No.13553656
薪資不要求就是最機掰的人
破壞同業的行情
你同事知道的話 不會給你好臉色的
無題 無名 ID:SgsSS5I6 2019/01/08(二) 10:59:25.980 No.13553659
無題 無名 ID:SgsSS5I6 2019/01/08(二) 10:59:26.009 No.13553660
無題 無名 ID:BUCNwtq6 2019/01/08(二) 10:59:49.718 No.13553663 無題 無名 ID:pYhVMdvE 2019/01/08(二) 11:03:31.163 No.13553683
如果你真的很想寫你的C++語法,下次一起粗乃丸就考慮告訴你這種情況該怎麼處理。
粗乃丸(芙蘭舉啤酒).jpg
無題 無名 ID:ZnuocCOA 2019/01/08(二) 11:03:59.725 No.13553687
>>13553663人家也許是富二代不死之身
我也認識過幾個小開同事
對他們而言上班只是一種消遣
像加入社團一樣
無題 無名 ID:ZnuocCOA 2019/01/08(二) 11:05:40.657 No.13553701 我個人的概念是程式碼必須能分割成小片段
這些小片段最好是函式
能寫成pure function是最好不過了
物件則是成員變數要盡量減少
這些小片段行數不多
最好是一個螢幕可以看完
對我而言這樣就是好程式了
像這樣短短的函式就算好
https://github.com/lua/lua/blob/master/lcode.c
大致上
>>13553446 講的第7點就是最重要的
要像書一樣有個索引大綱可看
命名什麼的真是狗屁
你程式碼切到只剩幾行的時候自然可以取出貼切的名字
而那些靈活且用法抽象的介面當然就無法取好名字
所以重點是先切乾淨切的夠細
拘泥命名的是腦子進水了吧?
無題 無名 ID:btle0Nhc 2019/01/08(二) 11:13:35.769 No.13553749
>>13553701>>對我而言這樣就是好程式了
對你的主管不是
要嘛就離職找適合的
不然就委曲求全不要再用"你認為好"的寫法 用"主管覺得好"的寫法
無題 無名 ID:ZnuocCOA 2019/01/08(二) 11:19:55.276 No.13553796
無題 無名 ID:ZnuocCOA 2019/01/08(二) 11:28:04.395 No.13553848
>>13553649我很樂意說明
樂意之至
我也不懂他為何拒絕學習
跟同事學習的效率根本奇高無比
比看書查網路快N倍
大師都是團隊討論中誕生的
我python java都是跟同公司的人學的
那些老工程師比圖書館還要好用
公司裡的技術力也是有M型化的感覺
無題 無名 ID:pYhVMdvE 2019/01/08(二) 11:29:39.380 No.13553857 >>13553748首先你要先認清楚現狀
1.你跟你主管承擔的壓力不同
->他是背負著部門負責的壓力,你則是背負自己成品的壓力。
2.你對你自己的能力有信心,但他不一定對你有信心。
3.你所謂的好程式碼不一定對他來說是好,尤其是他還要花時間成本去學習的情況下。
如果連這三點都沒認清楚的話,那改變風格就甭甭了。
粗乃丸(我兒子會掉到山谷下都是這些雞害的).jpg
無題 無名 ID:xoUaS5VA 2019/01/08(二) 11:40:35.017 No.13553937 其實我有個疑惑
為甚麼很多人在命名變數的時候都喜歡縮寫
而不是打個完整名稱
至少也打個註解
每次最先要搞懂的都是要知道那個變數是甚麼東西
程式碼的編纂跟順序我覺得是其次 你功能看下去基本功有的話還是能看懂
可是那個名稱真的有點干擾
命名簡短有甚麼幫助程式速度的因素在嘛? 不然幹嘛不寫的詳細
無題 無名 ID:ZnuocCOA 2019/01/08(二) 11:41:25.289 No.13553941
>>13553857>>2.你對你自己的能力有信心,但他不一定對你有信心。
都被你講中了
你還真是經驗豐富
無題 無名 ID:pYhVMdvE 2019/01/08(二) 11:44:33.915 No.13553963
>>13553937因為有人覺得只有自己懂得極簡縮寫變數名稱就是超屌,別人不懂是他們覽趴不夠大。
粗乃丸(雪風-一般).jpg
無題 無名 ID:6PoR1wXg 2019/01/08(二) 11:45:25.307 No.13553970
無題 無名 ID:pYhVMdvE 2019/01/08(二) 11:55:16.418 No.13554036 >>13554000給你真誠的建議,命名真的很重要。
好的命名來自於對於程式碼的目的透徹度,
換言之就是你是否真正了解邏輯處理。
[aa]
public string NameBlocked => Name.BlockPart('●', (1, 2));
//下面這段實際寫在Utitly中的擴充方法區塊
public static string BlockPart(this string thisString, char blockSymbol, (ushort startPosition, ushort endPosition) EncodeRange)
{
if (string.IsNullOrEmpty(thisString))
{
return thisString;
}
else
{
var intEndPosition = Math.Min(EncodeRange.endPosition, thisString.Length);
var intStartPosition = Math.Min(EncodeRange.startPosition, thisString.Length);
var resultPart1 = thisString.Left((ushort)Math.Min(intEndPosition, intStartPosition));
var resultPart3 = thisString.Right((ushort)(thisString.Length - Math.Max(intEndPosition, intStartPosition)));
var resultPart2 = "";
for (var index = 0; index < Math.Abs(intEndPosition - intStartPosition); index++)
{
resultPart2 += blockSymbol;
}
return $"{resultPart1}{resultPart2}{resultPart3}";
}
}
[/aa]
無題 無名 ID:ZnuocCOA 2019/01/08(二) 12:03:56.950 No.13554081 >>13554018一開始主管定下來的環境就是使用gcc編譯器
他用的編譯器也支援C++11
善用環境錯了嗎?
除非突然退回非常舊的Linux系統orWindowsXP
不然相容性問題根本遇不到
>>寫作風格應該是一開始就要統一的
其實我沒改架構
邏輯是一樣的
只是改的讓架構更明顯更容易查閱
風格是指匈牙利命名之類的嗎?
這些我照舊
無題 無名 ID:6Hy/GE8g 2019/01/08(二) 12:08:57.454 No.13554103 >>13554000看你有沒有跨過理解和被理解的中間
然後有沒有看過教學吧
以前常用INT a x y z n i j k之類的
用了幾年 整個公司都在用
那代表整個公司都沒受過那方面的教育
簡單說 未開發
無題 無名 ID:pYhVMdvE 2019/01/08(二) 12:09:43.478 No.13554108 >>13554077你知道嗎?
1.我不打算讓人使用這個Method時需要理解邏輯。
2.真的需要理解邏輯時的狀況肯定是很糟糕的,
與其打一堆註解我寧願選擇你所謂的很蠢命名法。
3.螢幕不夠大就換寬螢幕,一個寬螢幕不夠就申請兩個,三個。
4.全部測試寫註解這檔事有流派分別,我選擇放一邊。
粗乃丸(杹-探頭).jpg
無題 無名 ID:CO29Uqaw 2019/01/08(二) 12:13:36.766 No.13554137
>>13554122https://www.urbandictionary.com/define.php?term=.jpg
尸丁丁文化發揚到海外ㄛ
無題 無名 ID:pYhVMdvE 2019/01/08(二) 12:14:17.237 No.13554144
無題 無名 ID:ZuEmrncY 2019/01/08(二) 12:18:30.162 No.13554175
>>13554081如果那一天程式要移植到其他平台
結果卡住編譯不過去
debug兩個月之後
最後發現就是你這個智障寫的那一段程式
於是又要找個人重寫你寫過的部分
整套系統跑過的測試全部都要再重跑一次
>風格是指匈牙利命名之類的嗎?
光是命名規則相關的問題就包含很廣了
要駝峰字還是底線分隔
名詞要縮寫還是全名
縮寫要怎麼命名
宣告位置要怎麼規劃…等等
甚至小到無關緊要的左大括號位置
最好全部都統一
無題 無名 ID:gv6lPaHk 2019/01/08(二) 12:20:13.820 No.13554184 https://github.com/openbsd/src/blob/master/bin/csh/misc.c
openbsd的variable也是很短啊
無題 無名 ID:ZnuocCOA 2019/01/08(二) 12:21:19.298 No.13554190
>>13554109有啊
gcc那是新的
有另一票專案是只使用C語言寫的
因為那個環境能替公司省錢
大家都寫得很痛苦
主管自己也說很懷念std::string
無題 無名 ID:6Hy/GE8g 2019/01/08(二) 12:21:40.144 No.13554192
>>13554164你這代表你只一直做小程式而已
大型的 你寫的不是只有你自己看
別人寫的也不是別人自己看
就是因為太多你這種
最後要花一堆時間去追你這類型的程式問題
最後出來到底層 發現邏輯出問題
然後消掉好幾天
無題 無名 ID:ZnuocCOA 2019/01/08(二) 12:23:58.648 No.13554202
無題 無名 ID:6Hy/GE8g 2019/01/08(二) 12:25:37.202 No.13554218 不過呢 也有反其道而行
有目的的行為 為了更快升職
有是衝KPI
就幹你娘的寫爆 管他看不看得懂
總之就是要把東西弄出來 有BUG?
管你的 反正修的不是我 1年後就與我無關了
總之出一堆作品 就有成績了
有聽說過這樣的故事
無題 無名 ID:ZnuocCOA 2019/01/08(二) 12:33:31.034 No.13554288 無題 無名 ID:6Hy/GE8g 2019/01/08(二) 12:34:17.451 No.13554293
無題 無名 ID:6Hy/GE8g 2019/01/08(二) 12:41:36.168 No.13554336
>>13554308聽說華人很愛玩這個
以玩了好幾年了
反正做經理的不懂
外國是intergate那個去檢查的
無題 無名 ID:pYhVMdvE 2019/01/08(二) 12:57:11.755 No.13554457
>>13554342大學出來比較熟悉C,業界使用C#,中間我就磨過一陣子。
想想還真的有一點對不起接我那時狗屎爛扣的人,
不過想到以前是領鳥鳥的薪水,心中又放下惹。
粗乃丸(艦娘不知火-面攤).jpg
PS:早期程式碼變數會很短有另一部份是那時硬碟容量很貴。