建議練習改進之前應該考量的事項
你發現某個練習有想改進的地方了嗎? 首先,謝謝你在意這件事,也謝謝你特地撥空告訴我們!💙
修改練習時,有幾件事需要考慮,而學習練習(教授課程大綱中主題的那些)和練習題(其餘的)考量的點又稍有不同。 下面我們會分別說明。
不過,首先有幾件通用的原則要先談。
修改練習會造成不少後果:
基於這些理由,我們只會在能帶來明顯且具體的好處時,才審慎地修改練習。
練習的測試套件,目的並不是要涵蓋所有可能的情況。 我們的練習不是正式產品用的軟體,也不是為了模擬真實世界的使用情境。它們是設計成玩具問題,幫助你流暢地使用一門程式語言。 因此,我們刻意不追求涵蓋每一個邊界情況、不強制大量的輸入驗證,也不處理其他這類真實世界的顧慮。 如果你建議的改進是為了捕捉某個邊界情況,或是檢查輸入驗證,除非它對練習有實質的影響,否則不太可能被採納。
學習練習的設計只有一個目標:教會概念。 對練習的任何修改,首先都會以是否能讓概念的教學更好來評估。
學習練習(尤其)不是為了讓測試做到鉅細靡遺而設計的。 它們也常常刻意寫得有點不自然或拐彎抹角,以避免用到學生還沒學過的概念,或是不讓學生難以招架。
如果你建議的修改可能讓學生分心、偏離概念的學習,那大概會被拒絕。 如果這個修改能讓學習更輕鬆,我們會認真考慮。 如果介於兩者之間,也許會被接受,但不太可能優先處理。
關於練習題,最重要的一點是:幾乎所有的練習題都放在一個中央儲存庫裡(稱為「Problem Specifications」)。 因此,修改一道練習會對所有軌道產生連鎖反應。 這表示一個好的修改格外有力,因為它能幫助所有程式語言。 但這也提高了修改的門檻,因為變更需要多位跨軌道的維護者同意才能被接受,之後各語言的維護者還要把變更往下游同步到自己的軌道。
修改練習也可能導致它們在課程大綱中連結到的概念變得更模糊,或是練習需要額外的語言功能才能解出,進而改變它們解鎖的位置。 在變更被接受之前,這些也需要跨軌道一起考量。
雖然我們有機制讓只有部分軌道擁有某些測試案例,但我們通常不鼓勵這麼做,因為這種分岔會讓維護者和學生都感到困惑。 所以,在提出練習題的修改建議時,請考量跨軌道的整體大局。
雖然我們拒絕建議的理由很多,但很多時候,人們提出的好點子我們都會採納!
我們也幾乎總是樂於接受能讓敘述更清楚的用字調整,尤其是在學習練習中。
想讓你的建議最有機會通過,請在撰寫時展現你已經考慮過以下幾點:
另外請記得,把意見表達成意見,把事實表達成事實。 這樣通常能帶來最有建設性的討論。
再次感謝你撥空提出建議,也謝謝你讀完這份文件!