[爆卦]反函數寫法是什麼?優點缺點精華區懶人包

雖然這篇反函數寫法鄉民發文沒有被收入到精華區:在反函數寫法這個話題中,我們另外找到其它相關的精選爆讚文章

在 反函數寫法產品中有2篇Facebook貼文,粉絲數超過2萬的網紅紀老師程式教學網,也在其Facebook貼文中提到, [熱門文章] 程式設計、重構、與其它任何東西的終極問答 "The Ultimate Question of Programming, Refactoring, and Everything" 網頁版: http://goo.gl/6jIcIp PDF 版: https://yadi.sk/i/pB...

 同時也有46部Youtube影片,追蹤數超過4萬的網紅吳老師教學部落格,也在其Youtube影片中提到,Python基礎程式語言應用證照班第7次上課 01_重點回顧與308題增加外迴圈 02_308題改為for_each的寫法 03_308題改用餘數與除除方法 04_310迴圈公式計算解答 05_402不定數迴圈最小值解答 06_402不定數迴圈改用串列完成 07_404數字反轉判斷用文字串接解答 ...

  • 反函數寫法 在 紀老師程式教學網 Facebook 的最讚貼文

    2016-04-24 15:02:20
    有 37 人按讚

    [熱門文章] 程式設計、重構、與其它任何東西的終極問答

    "The Ultimate Question of Programming, Refactoring, and Everything"
    網頁版: http://goo.gl/6jIcIp
    PDF 版: https://yadi.sk/i/pBZqebxsr5Wyg
    #Craftmanships #SoftwareEngineering #CPP #Refactoring #ProgrammingSkills

    好的!遲交比不交好,今天的推薦文來了(笑)~

    今天介紹這篇,是過去一個禮拜在國外鄉民聚集地 Reddit 程式設計版瘋傳的文章。標題很臭屁「The Ultimate Question of Programming, Refactoring, and Everything」(沒錯!我就在意它最後一個字 "Everything"。咬我啊! XD)。因為轉載的人實在太多,讓我不禁努力地把它看完了。

    其實這篇文章講的是 C/C++ 程式寫作者應該注意、或建議遵守的 42 個小訣竅。既不「Ultimate(終極)」,也不是涵蓋「Everthing」。不過裡面還是有不少中肯的建議,所以我還是將它介紹給大家。

    為了讓英文苦手的朋友也能稍微感受一下這篇文章在講什麼,所以我不負責任地快速翻譯了每個標題一下。如果對哪個主題有興趣的,就麻煩大家直接對照標題號碼去看原文解說。原文有些標題用「戲謔」或「隱晦」寫法,我若直接翻譯,大家可能不知道原作者想表達什麼。所以我會將某些標題,用比較易懂的中文重新表達。一切以「標題編號(1~42)」為準。

    接下來就請享用我這個不負責任的翻譯了。有會錯原文意思的,還請各位留言在下方、然後鞭小力一點 XD。我會馬上修正的:

    1. 不要去做編譯器會做的事情
    如:用迴圈能存取 a[0] ~ a[9],就不要用「拷貝貼上」a[0], a[1], a[2]..., a[9] 來存取裡面的內容值。

    2. 大於 0 不代表它等於 1
    若文件告訴你某函數執行成功會傳回「大於0」的值、但目前這個大於0的值是「1」。請你寫程式的時候不要自作聰明地偵測「傳回值 == 1」當成成功,請乖乖遵照規格書用「傳回值 > 0」等於成功。因為將來的版本有可能還會傳回 2, 3...等其他值。

    3. 當你拷貝貼上一段程式碼,記得檢查它的副本兩遍
    有時候你拷貝貼上一段程式碼,會忘了去修改裡面一些不同的小數字,導致花了大把時間去檢查錯誤到底出現在哪裡。

    4. 小心使用「? :」運算子。並記得多加括號
    「? :」是 C/C++ 內常用的運算子。若您寫了一段這樣的原始碼「a - b?0:1」,您可能以為它是這樣運作的「a - (b?0:1)」,事實上,它是這樣運作的「(a-b)?0:1」。結論是,多加括號保平安。

    5. 多用市面上有的工具來分析您的原始碼
    市面上有些工具,如:原始碼靜態分析工具、原始碼排列工具...可以幫您在把原始碼送入編譯器前,就抓到錯誤。不過作者也提到,別以為倚賴這些工具,錯誤就不會發生。真正要減少錯誤還是得靠多讀規格書,增加程式寫作經驗才辦得到。

    6. 確認您所有的指標,都已經轉型成整數型態
    作者擔心,某些使用 64 bits 當成指標變數寬度的系統,到 32 bits 的機器內重新編譯時,會產生高位元組被截斷的慘劇。某些編譯器提供「uintptr_t」這個專門給指標變數使用的型態,會隨著編譯器所在的環境,自動調整指標寬度。

    7. 別在迴圈內呼叫「alloca()」這個函數
    萬一迴圈失控,alloca() 函數會霸佔大量記憶體無法釋放。建議事先在迴圈外霸佔一大塊足夠的記憶體,然後在迴圈內慢慢蠶食之。

    8. 在「解構函數(Destructor)」內使用「例外處理(Exception)」是很危險的!
    作者認為,在負責釋放記憶體、收尾等工作的解構函數,還去霸佔新記憶體作事情是不好的。若真的發生例外(Exception),直接「吃掉(Supress)」不要讓它出現在使用者面前可能還比較好。

    9. 若你要比對字串結尾,請用 '\0' 代表
    有些程式設計師因為 '\0' 其實就是數字 0,而在比對字串結尾時,直接使用 0 來比對字串結尾。作者認為這個習慣不好。

    10. 請勿濫用 # ifdef
    # ifdef 很好用,但很容易讓原始碼雜亂難讀。作者不會建議大家不要用,但他反對連可以用 if ~ else 解決的場合,都濫用 # ifdef。

    11. 別把一堆運算子全都擠在同一列
    多分成幾列,Debugger 可以比較容易指出發生錯誤的是在哪個環節。

    12. 當你「拷貝貼上」程式碼時,特別注意「最後一列效應」
    作者還是不太建議濫用拷貝貼上,他認為需要重複使用一段程式碼,不如好好考慮寫成稍有彈性的函數,然後重複叫用。此外,他建議大家去看「最後一列效應」這篇文章(連結在本文),並了解最後一列效應在拷貝貼上程式碼內,所扮演的角色。

    13. 程式碼若很長,盡量多折幾列,然後排成像表格般一樣整齊(Table-style)

    14. 好編譯器 + 好的寫碼習慣是不夠的
    內文舉了個後括號「)」括錯位置,但編譯器抓不出來的例子。

    15. 若有一堆意義相關的常數,請用 enum 括住它們

    16. 「看我能把程式碼寫得這麼屌!」的炫耀寫碼心態不可取
    寫程式碼要以「穩」「易讀」為主,不是把一些剛學不久,覺得很酷,但三個月後會忘個精光的技術用進程式碼內。

    17. 想用程式碼把一塊資料清乾淨,最好把清除程式碼獨立拉出來成一個專屬函數
    18. 你在一個語言行得通的方法,在另一個語言不一定行得通
    19. 盡量用技巧避免在同一個類別內,建構函數彼此呼叫的情況
    20. 讀檔時,只檢查有沒有讀到檔尾(EOF)似乎是不夠的
    21. 正確檢查 EOF 的方法
    22. 有比使用 # pragma warning(...) 來印錯誤訊息更好的方法,勿濫用
    23. 如果你想取得字串長度,用函數自動幫你算,別用手算然後硬填數字上去
    24. 請多使用 "override" 與 "final",它們會是你的好朋友
    25. 別再把 "this" 指標跟 "nullptr"(空指標)拿來作比較
    26. 小心使用 VARIANT_BOOL 這個陰險狡猾的東西
    27. BSTR(Binary STRing)這個用於微軟 COM/Automation 技術中的資料型態,請小心使用
    28. 能用函數把一段程式碼包起來重複用,就別用巨集包它(使用巨集函數的缺點多於優點)
    29. 在迴圈或迭代程式碼間,使用 ++i,來取代 i++(i++ 編譯後的執行效能稍微差那麼一點)
    30. wprintf() 函數的使用陷阱:Win32 印寬字元字串要用 %S(大寫),Win64 要用 %s(小寫)。
    31. 陣列在 C/C++ 傳給函數時,並非是「傳值呼叫」(Call by Value)
    32. 要把檔案內的文字直接印在螢幕上時,請不要直接使用 printf() (怕檔案內夾雜 % 開頭的字,這些字對 printf 是有特殊意義的)
    33. 想對一個指標取值(亦即:*p),記得檢查它是否為 NULL。否則你對 NULL 取值會導致系統出錯的
    34. 別以為 int 的上限 21億+ 很多,在 64 bits 系統中,這個數字很容易爆掉
    35. 若您把 enum 常數與 switch~case 連用,增加新元素進 enum 時也別忘了加新 case 進 switch
    36. 如果有怎麼抓都抓不出來的 bugs,記得往「記憶體」的方向去思考(32bits vs. 64bits 之類的問題)
    37. 在 do~while() 內用 continue 指令要小心,有可能會跳過你放在底部的「更新條件」,導致無窮迴圈
    38. 對於指標,請用 nullptr 代替 NULL,這是新的 C++ 規格書希望您遵循的
    39. 試著別把一列式子搞得太複雜,這樣比較不會有「咦?為何這段寫錯的程式碼居然可以運作」的問題出現
    40. 開始使用「原始碼靜態分析工具」吧!
    41. 別為了要使用某函式庫的一個函式,而引進整個函式庫。如果只用了一個函式,建議自己寫比較容易維護。
    42. 別再用 empty 這個曖昧的字眼當函數名稱了。用 erase(), clear() 都比 empty() 好。

    如果您覺得小弟翻譯了這麼多,沒有功勞也有苦勞,那就麻煩按個讚犒賞小弟一下吧!當然歡迎轉發給您 Facebook 的朋友共同討論。最後提醒一句,上述 42 點別把它們全都當聖旨,親身體會驗證才是最重要的喔!

    祝福大家假期愉快!

  • 反函數寫法 在 一本好小說的誕生(拿起筆就能寫) Facebook 的最佳解答

    2014-12-29 13:31:41
    有 16 人按讚


    (摘兩段w)

    五、
    大概沒有任何一個人的一生,比維根斯坦更矛盾了.年輕時他一直想要隱居,不受打擾地進行邏輯思考,也真的去了挪威的小木屋裡孤獨地待了一年多,但是第一次世界大戰爆發,他卻迫不急待想方設法參加戰事,以致被俘虜了,在戰俘營 那種最混亂折磨的環境中完成了『邏輯哲學論』,好像最安靜狀態下想不通的問題,反而在戰俘營 裡想通了.二十多年後,第二次世界大戰爆發,維根斯坦又急著想上戰場,老天,那年他五十歲了.勉強得到跟戰爭有關的工作,在倫敦處理傷患的醫院服務,他的頭銜--「搬運工」.後來轉到一個研究戰場傷患處理的單位去,他的頭銜--「打雜工」.


    九、
    我們到底怎麼學會一些事的?有多少是別人教我們的,又有多少非得靠自己「重新發明」呢?老友張大春曾經從書法中悟及一個道理:書法從來不是老師教會的,你只能自己找到了寫法,然後驀然回首映證:原來老師或哪個前輩也這樣寫過.這和維根斯坦的想法,有相通之處吧!

    一、

    二十多年前在美國念書,和哲學研究所的同學在地下室的咖啡館裡,只要開頭提到維根斯坦的名字,就可以聊天討論一整下午或一整夜,為畢生至樂.光是他名著『邏輯哲學論』裡面提出的七條前提,就可以讓我們討論不休.其中有一條有邏輯方程式,不管那個曾經是數學天才的同學如何反覆解釋,我都沒辦法完全弄懂,但卻無礙於在昏黃的燈下,感染他的熱情,相信這套方程式真正能告訴我們甚麼是「真理」,或更精確地用維根斯坦的語言說:甚麼是「真理函數」.

    二、

    七條前提中其他六條,都充滿了奇特的暗示性,一點都不像邏輯形式語句.其中一條是:「A logical picture of facts is a thougt.」勉強譯為「事實的合邏輯圖像形成思想.」另一條是:「A thought is a sentence with sense.」勉強譯為:「思想是有意義(或有感官連結)的句子(或句法)」.再一條:「A sentence is a truth-function of elementary sentences.」「句子是基本句子的真理函數」?沒辦法,無法翻譯,但卻又讓人不願放過,會不斷地想探究維根斯坦到底要表示甚麼?

    三、

    最精采的,當然是前提中的最後一條:「對於無法訴說的,我們只能保持沉默.」這是邏輯討論嗎?純粹從邏輯上看,這不是廢話,不是「套套絡基」tautology嗎?既然「無法訴說」,當然就只能「保持沉默」.「無法訴說」的定義裡就包含了沉默,不是嗎?但絕大部分讀到的人,都不會覺得這是句廢話,相反地,這句話讓人大有感觸,知覺到一種非邏輯的,生命實存難題──多少時刻我們不都努力試圖去訴說無法訴說的,不願或不能保持沉默嗎?對於無法訴說的,我們只能、或說我們真能保持沉默嗎?這份被刺激出的感觸,我們也說不清究竟是什麼,說不清,卻又很想說,很難保持沉默.

    四、

    就連他臨終的最後一句話,我們都莫名其妙覺得讚嘆不已.得了癌症,維根斯坦拒絕進醫院治療,接受一位醫生邀請住進醫生家,一天早上,維根斯坦極度不舒服,醫生冷靜地告訴他,時候到了,他也冷靜地接受了.最後一句話對醫生說:「good, tell them I've had a good life.」「好,告訴他們我有過美好的一生.」討論了半天,有人認為這句話迷人之處在「美好的一生」,我卻認為關鍵在「tell them」,告訴他們,他們是誰?為什麼要告訴他們?

    五、

    大概沒有任何一個人的一生,比維根斯坦更矛盾了.年輕時他一直想要隱居,不受打擾地進行邏輯思考,也真的去了挪威的小木屋裡孤獨地待了一年多,但是第一次世界大戰爆發,他卻迫不急待想方設法參加戰事,以致被俘虜了,在戰俘營 那種最混亂折磨的環境中完成了『邏輯哲學論』,好像最安靜狀態下想不通的問題,反而在戰俘營 裡想通了.二十多年後,第二次世界大戰爆發,維根斯坦又急著想上戰場,老天,那年他五十歲了.勉強得到跟戰爭有關的工作,在倫敦處理傷患的醫院服務,他的頭銜--「搬運工」.後來轉到一個研究戰場傷患處理的單位去,他的頭銜--「打雜工」.

    六、

    維根斯坦生平只寫了兩本大書──『邏輯哲學論』和『哲學探究』,而『哲學探究』開宗明義就是為了批駁『邏輯哲學論』而寫的.這不只是「昨非今是」,不是「以今日之我與昨日之我戰鬥」,更神奇的是,前後兩本書各啟發了一個大潮流,前面的潮流沒有因維根斯坦自己的揚棄批判而消散,繼續和後面的潮流平行存在.這兩個潮流貫串二十世紀西方哲學,不斷吵架不斷彼此攻訐,構成最熱鬧最精采的思想風景.

    七、

    早期維根斯坦思考:甚麼是我們無法思考無法述說的?後期維根斯坦轉而關心:甚麼是我們能夠創造意義的方式?一個負面一個正面,一個努力排除一個開放涵納,同樣一個人卻自我對反到近乎絕對的程度.

    八、

    維根斯坦的老師羅素幫他的『邏輯哲學論』寫了一篇導言,卻被維根斯坦拒絕了,覺得老師誤解了他的想法,即使因而影響到書籍出版的機會,在所不惜.後來他稍有悔改,覺得錯怪了羅素.不是說羅素的導言有其價值,而是體認了根本不會有人讀得懂『邏輯哲學論』.沒人會從閱讀『邏輯哲學論』中領悟維根斯坦所想到、所發明的,卻並不表示別人不會懂得這些想法──後來的人會自己思考得到了和這本書中一樣的想法,然後驚訝地發現原來之前就有人寫過了.

    九、

    我們到底怎麼學會一些事的?有多少是別人教我們的,又有多少非得靠自己「重新發明」呢?老友張大春曾經從書法中悟及一個道理:書法從來不是老師教會的,你只能自己找到了寫法,然後驀然回首映證:原來老師或哪個前輩也這樣寫過.這和維根斯坦的想法,有相通之處吧!

  • 反函數寫法 在 吳老師教學部落格 Youtube 的最佳解答

    2021-09-02 23:10:09

    Python基礎程式語言應用證照班第7次上課

    01_重點回顧與308題增加外迴圈
    02_308題改為for_each的寫法
    03_308題改用餘數與除除方法
    04_310迴圈公式計算解答
    05_402不定數迴圈最小值解答
    06_402不定數迴圈改用串列完成
    07_404數字反轉判斷用文字串接解答
    08_404數字反轉用List反轉輸出
    09_重點回顧與預告

    完整教學
    http://goo.gl/aQTMFS

    吳老師教學論壇
    http://www.tqc.idv.tw/

    教學論壇(之後課程會放論壇上課學員請自行加入):
    https://groups.google.com/g/tcfst_python_2021_2

    證照基礎程式語言 (Python 3)證照
    Python 第1類:基本程式設計
    技能內容:變數與常數、指定敘述、標準輸入輸出、運算式、算術運算子、數學函式的應用、格式化的輸出Python 第2類:選擇敘述
    技能內容:if、if...else、if…elifPython 第3類:迴圈敘述
    技能內容:while、for…inPython 第4類:進階控制流程
    技能內容:常用的控制結構、條件判斷、迴圈Python 第5類:函式(Function)
    技能內容:函式使用、傳遞參數、回傳資料、內建函式、區域變數與全域變數

    上課用書:
    Python 3.x 程式語言特訓教材(第二版)
    作者: 蔡明志, 財團法人中華民國電腦技能基金會
    出版社:全華
    出版日期:2018/12/20
    定價:490元

    吳老師 110/9/2

    EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境

  • 反函數寫法 在 吳老師教學部落格 Youtube 的最讚貼文

    2021-09-02 23:09:41

    Python基礎程式語言應用證照班第7次上課

    01_重點回顧與308題增加外迴圈
    02_308題改為for_each的寫法
    03_308題改用餘數與除除方法
    04_310迴圈公式計算解答
    05_402不定數迴圈最小值解答
    06_402不定數迴圈改用串列完成
    07_404數字反轉判斷用文字串接解答
    08_404數字反轉用List反轉輸出
    09_重點回顧與預告

    完整教學
    http://goo.gl/aQTMFS

    吳老師教學論壇
    http://www.tqc.idv.tw/

    教學論壇(之後課程會放論壇上課學員請自行加入):
    https://groups.google.com/g/tcfst_python_2021_2

    證照基礎程式語言 (Python 3)證照
    Python 第1類:基本程式設計
    技能內容:變數與常數、指定敘述、標準輸入輸出、運算式、算術運算子、數學函式的應用、格式化的輸出Python 第2類:選擇敘述
    技能內容:if、if...else、if…elifPython 第3類:迴圈敘述
    技能內容:while、for…inPython 第4類:進階控制流程
    技能內容:常用的控制結構、條件判斷、迴圈Python 第5類:函式(Function)
    技能內容:函式使用、傳遞參數、回傳資料、內建函式、區域變數與全域變數

    上課用書:
    Python 3.x 程式語言特訓教材(第二版)
    作者: 蔡明志, 財團法人中華民國電腦技能基金會
    出版社:全華
    出版日期:2018/12/20
    定價:490元

    吳老師 110/9/2

    EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境

  • 反函數寫法 在 吳老師教學部落格 Youtube 的最佳解答

    2021-09-02 23:09:39

    Python基礎程式語言應用證照班第7次上課

    01_重點回顧與308題增加外迴圈
    02_308題改為for_each的寫法
    03_308題改用餘數與除除方法
    04_310迴圈公式計算解答
    05_402不定數迴圈最小值解答
    06_402不定數迴圈改用串列完成
    07_404數字反轉判斷用文字串接解答
    08_404數字反轉用List反轉輸出
    09_重點回顧與預告

    完整教學
    http://goo.gl/aQTMFS

    吳老師教學論壇
    http://www.tqc.idv.tw/

    教學論壇(之後課程會放論壇上課學員請自行加入):
    https://groups.google.com/g/tcfst_python_2021_2

    證照基礎程式語言 (Python 3)證照
    Python 第1類:基本程式設計
    技能內容:變數與常數、指定敘述、標準輸入輸出、運算式、算術運算子、數學函式的應用、格式化的輸出Python 第2類:選擇敘述
    技能內容:if、if...else、if…elifPython 第3類:迴圈敘述
    技能內容:while、for…inPython 第4類:進階控制流程
    技能內容:常用的控制結構、條件判斷、迴圈Python 第5類:函式(Function)
    技能內容:函式使用、傳遞參數、回傳資料、內建函式、區域變數與全域變數

    上課用書:
    Python 3.x 程式語言特訓教材(第二版)
    作者: 蔡明志, 財團法人中華民國電腦技能基金會
    出版社:全華
    出版日期:2018/12/20
    定價:490元

    吳老師 110/9/2

    EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境

你可能也想看看

搜尋相關網站