Re: [問卦] 代問:如何寫出讓人看不懂的Python程式碼?

看板Gossiping作者 (廢文局局花)時間2年前 (2021/08/12 17:49), 編輯推噓7(700)
留言7則, 7人參與, 2年前最新討論串2/5 (看更多)
你/你朋友需要的是「Ninja Code」 這裡有參考 https://javascript.info/ninja-code 雖然是JavaScript 但有句話說得好 語言只是工具,重點是怎麼解決問題(或是製造問題) 有簡中可以選,英文不好可以加減看 裏面引用了道德經 融合道家思想 讓你寫的程式碼沒人可以追隨 「Many try to follow ninja path, few succeed.」 不過我看下來可以整理出幾個重點 —————— 1. 越簡短越好 盡可能使用大量的one-line comprehension return "win" if dealer.score < player.score else "lose" 其中判別式的部分也可以自由地加入各種不同邏輯 同時將變數名稱拉長,可以讓該句可讀性變差,讚的 —————— 2. 使用縮寫 dealer -> dr player -> pr score -> s 不過這方法用在one-line comprehension未必可以造成最佳效果 因為會讓語句變短 更好理解 return "win" if dr.s < pr.s else "lose" 這狀況應該是用在重複出現時盡可能使用 trace code時會因為要轉換這些變數名稱而迷失方向 —————— 3. 抽象化 這裏不是指把類別抽象化 是把變數名稱抽象畫 [print(team, score) for team, score in score_board.items()] 何不把他變成 [print(obj, val) for obj, val in map_.items()] —————— 4. 注意力測試! data 和 date 是不是很像呢 用吧! —————— 5. 同義詞 display_message 跟 show_message 是不是字面上一樣意思呢? 給他們不同功能吧! —————— 6. 重複使用變數名稱 並不是指 global / local variable 混用 但如果跑得過也沒關係 是指 def f(elem): # 20 lines working with elem elem = do_something(elem) # 20 more lines working with elem 一樣容易迷失 —————— 7. 為了好玩加底線 後綴底線主要為了避免跟保留字衝突 list_, dict_, ... 前綴則是社群共識 用來做為private 但你可以 _player __dealer 讓人誤會有什麼特殊作用,其實沒有 —————— 8. 展現你的愛 加一些詞彙讓你的物件看起來更厲害 mega_func super_instance magic_number —————— 裡面還有一些我沒提到你可以再研究看看 之前被臉書炒的 The Techlead 也有教你怎麼增加自己在公司的重要性 就是寫難以trace 的code 一時找不到可以請版友協助貼連結 下台一鞠躬,祝順心 ----- Sent from JPTT on my iPhone -- 廢文局 Bureau of Nonsense 服務項目:金曲點播戰南北戰學校戰男女不知所云耳包耍基歌曲導唱帶風向反串名著導讀 做白日夢生日討拍誇大不實卡通懷舊消夜文犀利嘴砲吊書櫥故意錯字討論串續命買曝光度 局長:chshh1515 副局長:a234john168 人資主任:dweabybnye 高級幹員:tnfsh5566 特聘僱問:balahaha 打掃阿姨:heygoyours 希望之星總召:lovechen239             *~~~誠摯為您服務~~~* -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.13.132.203 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1628761789.A.6C8.html

08/12 17:53, 2年前 , 1F
變數都用il11llil1l111iii這種的
08/12 17:53, 1F

08/12 17:55, 2年前 , 2F
優喔,不過原來我code已經夠ninja了
08/12 17:55, 2F

08/12 17:57, 2年前 , 3F
離職前寫的 code 差不多就這樣了
08/12 17:57, 3F

08/12 18:05, 2年前 , 4F

08/12 19:44, 2年前 , 5F
乾XDDDD 這真的很妨礙閱讀
08/12 19:44, 5F

08/12 23:15, 2年前 , 6F
讚 報復社會
08/12 23:15, 6F

08/12 23:47, 2年前 , 7F
你是不是常常這麼幹
08/12 23:47, 7F
文章代碼(AID): #1X5EwzR8 (Gossiping)
討論串 (同標題文章)
文章代碼(AID): #1X5EwzR8 (Gossiping)