點學寫靚PROGRAM

315 回覆
17 Like 1 Dislike
2017-04-12 19:12:34

...
for同while根本係兩個唔同目的,係絕對唔應該撈亂用。


自己因為新手上路真心唔係好完全識分咩時候用for更好,幾時用while更好。自己while又用得少,搞到極唔熟,有時候覺得while個度寫得啱,但又run唔到……所以自己下意識依靠多咗if同for,根本惡性循環,唔練多啲真係停滯不前

for (; true;){
}
while (true){
}
有咩唔同 ?


為咗幫大家/Mr.A容易啲討論Loops之謎, 小弟摷番個好耐之前寫嘅JS program做基礎 :

Four types of loops: for, for/in, while, do/while

Output:


Complete html code can be found here: https://paste.ofcode.org/uGmXNxkv7RcZEWMCpvmJna#
2017-04-12 19:15:12

switch本質上同if無分別,寫switch,extends都係要加幾行,有咩分別,if就難maintain,switch就會易?咁Python咪好難maintain?
用dictionary store起個state,如果係range check又點做?

係架,如果你覺得不寫if練功法太容易,你可以限制埋自己寫switch
range check唔係重點,用if之前讓自己三思,令自己討厭if
寧願寫for(){ if() } 都唔畀自己寫if(){}else if(){}else if(){}
寧願寫switch case都唔寫if

多數program switch case有個特性, 就係只做最簡單分類,基本上做logic flow既機會比較多, 我正正就係唔想係logic flow畀if出場


巴打想法認真幾好,又可以俾自己用下for,while個啲,唔會一味用死if,搞到for,while個啲用得唔熟,我自己就用太多if同for,搞到while,do while唔多識用,多得巴打提醒下,之後自己會注意多啲

for同while根本係兩個唔同目的,係絕對唔應該撈亂用。


自己因為新手上路真心唔係好完全識分咩時候用for更好,幾時用while更好。自己while又用得少,搞到極唔熟,有時候覺得while個度寫得啱,但又run唔到……所以自己下意識依靠多咗if同for,根本惡性循環,唔練多啲真係停滯不前

for (; true;){
}
while (true){
}
有咩唔同 ?

個人偏好用for 做 iterator. 個 for clause 控制個iteration flow, 主要係sequential 嘢同埋你大概知幾時完 (for each, for (int i = 0;i < arr.Length; i++) etc)
Loop through list and array 用while 都做到但 for 好似易睇啲


While 就係有個執行condition, 而係一真做至condition 唔再同為止
個condition 係code 入邊可能會改
While (condition) {
// condition might change here. Stops when it happens; break as needed
....
}

有時想行至少一次又可以用 do while

可以用for 做到個人鍾意寫for 多啲 感覺易明啲

手機打懶fix casing 梳
2017-04-12 19:27:28

switch本質上同if無分別,寫switch,extends都係要加幾行,有咩分別,if就難maintain,switch就會易?咁Python咪好難maintain?
用dictionary store起個state,如果係range check又點做?

係架,如果你覺得不寫if練功法太容易,你可以限制埋自己寫switch
range check唔係重點,用if之前讓自己三思,令自己討厭if
寧願寫for(){ if() } 都唔畀自己寫if(){}else if(){}else if(){}
寧願寫switch case都唔寫if

多數program switch case有個特性, 就係只做最簡單分類,基本上做logic flow既機會比較多, 我正正就係唔想係logic flow畀if出場


巴打想法認真幾好,又可以俾自己用下for,while個啲,唔會一味用死if,搞到for,while個啲用得唔熟,我自己就用太多if同for,搞到while,do while唔多識用,多得巴打提醒下,之後自己會注意多啲

for同while根本係兩個唔同目的,係絕對唔應該撈亂用。


自己因為新手上路真心唔係好完全識分咩時候用for更好,幾時用while更好。自己while又用得少,搞到極唔熟,有時候覺得while個度寫得啱,但又run唔到……所以自己下意識依靠多咗if同for,根本惡性循環,唔練多啲真係停滯不前

for (; true;){
}
while (true){
}
有咩唔同 ?

個人偏好用for 做 iterator. 個 for clause 控制個iteration flow, 主要係sequential 嘢同埋你大概知幾時完 (for each, for (int i = 0;i < arr.Length; i++) etc)
Loop through list and array 用while 都做到但 for 好似易睇啲


While 就係有個執行condition, 而係一真做至condition 唔再同為止
個condition 係code 入邊可能會改
While (condition) {
// condition might change here. Stops when it happens; break as needed
....
}

有時想行至少一次又可以用 do while

可以用for 做到個人鍾意寫for 多啲 感覺易明啲

手機打懶fix casing 梳

萬一個iterator係冇Length,iterator只係知有冇next record, 咁樣情況用while, 會容易理解過for loop
例如sql cursor, stream, queue
2017-04-12 19:31:40

switch本質上同if無分別,寫switch,extends都係要加幾行,有咩分別,if就難maintain,switch就會易?咁Python咪好難maintain?
用dictionary store起個state,如果係range check又點做?

係架,如果你覺得不寫if練功法太容易,你可以限制埋自己寫switch
range check唔係重點,用if之前讓自己三思,令自己討厭if
寧願寫for(){ if() } 都唔畀自己寫if(){}else if(){}else if(){}
寧願寫switch case都唔寫if

多數program switch case有個特性, 就係只做最簡單分類,基本上做logic flow既機會比較多, 我正正就係唔想係logic flow畀if出場


巴打想法認真幾好,又可以俾自己用下for,while個啲,唔會一味用死if,搞到for,while個啲用得唔熟,我自己就用太多if同for,搞到while,do while唔多識用,多得巴打提醒下,之後自己會注意多啲

for同while根本係兩個唔同目的,係絕對唔應該撈亂用。


自己因為新手上路真心唔係好完全識分咩時候用for更好,幾時用while更好。自己while又用得少,搞到極唔熟,有時候覺得while個度寫得啱,但又run唔到……所以自己下意識依靠多咗if同for,根本惡性循環,唔練多啲真係停滯不前

for (; true;){
}
while (true){
}
有咩唔同 ?

個人偏好用for 做 iterator. 個 for clause 控制個iteration flow, 主要係sequential 嘢同埋你大概知幾時完 (for each, for (int i = 0;i < arr.Length; i++) etc)
Loop through list and array 用while 都做到但 for 好似易睇啲


While 就係有個執行condition, 而係一真做至condition 唔再同為止
個condition 係code 入邊可能會改
While (condition) {
// condition might change here. Stops when it happens; break as needed
....
}

有時想行至少一次又可以用 do while

可以用for 做到個人鍾意寫for 多啲 感覺易明啲

手機打懶fix casing 梳


你睇番我樓上啲圖, 其實主要係Initial value, Condition to break, Incremental/Decremental operation呢三樣擺位唔同嘅分別啫. Anyway, for loop將呢三呢嘢集中擺埋一齊, 真係最容易睇!
2017-04-12 19:57:05

switch本質上同if無分別,寫switch,extends都係要加幾行,有咩分別,if就難maintain,switch就會易?咁Python咪好難maintain?
用dictionary store起個state,如果係range check又點做?

係架,如果你覺得不寫if練功法太容易,你可以限制埋自己寫switch
range check唔係重點,用if之前讓自己三思,令自己討厭if
寧願寫for(){ if() } 都唔畀自己寫if(){}else if(){}else if(){}
寧願寫switch case都唔寫if

多數program switch case有個特性, 就係只做最簡單分類,基本上做logic flow既機會比較多, 我正正就係唔想係logic flow畀if出場


巴打想法認真幾好,又可以俾自己用下for,while個啲,唔會一味用死if,搞到for,while個啲用得唔熟,我自己就用太多if同for,搞到while,do while唔多識用,多得巴打提醒下,之後自己會注意多啲

for同while根本係兩個唔同目的,係絕對唔應該撈亂用。


自己因為新手上路真心唔係好完全識分咩時候用for更好,幾時用while更好。自己while又用得少,搞到極唔熟,有時候覺得while個度寫得啱,但又run唔到……所以自己下意識依靠多咗if同for,根本惡性循環,唔練多啲真係停滯不前

for (; true;){
}
while (true){
}
有咩唔同 ?

個人偏好用for 做 iterator. 個 for clause 控制個iteration flow, 主要係sequential 嘢同埋你大概知幾時完 (for each, for (int i = 0;i < arr.Length; i++) etc)
Loop through list and array 用while 都做到但 for 好似易睇啲


While 就係有個執行condition, 而係一真做至condition 唔再同為止
個condition 係code 入邊可能會改
While (condition) {
// condition might change here. Stops when it happens; break as needed
....
}

有時想行至少一次又可以用 do while

可以用for 做到個人鍾意寫for 多啲 感覺易明啲

手機打懶fix casing 梳

你講果堆咪其實係for while do while最基本原意
2017-04-12 19:58:42
學左兩年都仲好似半桶水
DESIGN PATTERN學左
但好多技巧都唔識,
E.G.今日睇到Convention over Configuration又發現自己一路做得唔好
E.G.落手做做極都唔可以一勞永逸
等等

學到好LOST


Design Pattern係對特定情景既model answer,
但你唔識中間既推導過程, 你遇上open question既時候就會gg

基本上講Design Pattern既書都一定會先講Design Principle
Design Principle才是判斷是否好code既基本工

btw, 個人推薦不寫if學習法
一直堅持唔寫if, 直到必要時才用

唔寫IF可以點
polymorphism?

點做到唔寫IF
會唔會最後可能只係factory/strategy嚟
將啲if/switch擺去第2個地方
令到個main logic睇落好靚好直接

while (condition){
 // do something
 break;
}
咁樣唔寫 if ?

用state strategy 果d pattern
你出個loop出來做咩
2017-04-12 19:59:32

係架,如果你覺得不寫if練功法太容易,你可以限制埋自己寫switch
range check唔係重點,用if之前讓自己三思,令自己討厭if
寧願寫for(){ if() } 都唔畀自己寫if(){}else if(){}else if(){}
寧願寫switch case都唔寫if

多數program switch case有個特性, 就係只做最簡單分類,基本上做logic flow既機會比較多, 我正正就係唔想係logic flow畀if出場


巴打想法認真幾好,又可以俾自己用下for,while個啲,唔會一味用死if,搞到for,while個啲用得唔熟,我自己就用太多if同for,搞到while,do while唔多識用,多得巴打提醒下,之後自己會注意多啲

for同while根本係兩個唔同目的,係絕對唔應該撈亂用。


自己因為新手上路真心唔係好完全識分咩時候用for更好,幾時用while更好。自己while又用得少,搞到極唔熟,有時候覺得while個度寫得啱,但又run唔到……所以自己下意識依靠多咗if同for,根本惡性循環,唔練多啲真係停滯不前

for (; true;){
}
while (true){
}
有咩唔同 ?

個人偏好用for 做 iterator. 個 for clause 控制個iteration flow, 主要係sequential 嘢同埋你大概知幾時完 (for each, for (int i = 0;i < arr.Length; i++) etc)
Loop through list and array 用while 都做到但 for 好似易睇啲


While 就係有個執行condition, 而係一真做至condition 唔再同為止
個condition 係code 入邊可能會改
While (condition) {
// condition might change here. Stops when it happens; break as needed
....
}

有時想行至少一次又可以用 do while

可以用for 做到個人鍾意寫for 多啲 感覺易明啲

手機打懶fix casing 梳

你講果堆咪其實係for while do while最基本原意


上邊有人問有乜分別同幾時用邊個

下次我答照個keyword 原意用囉
2017-04-12 20:06:37
其實新手入門最好攝高枕頭諗下
之前d人設計呢個工具用意係邊

新手限制自己寫曲方向
我認為會走火入魔

好容易簡單複雜化
複雜愈搞愈複雜
2017-04-12 20:20:28

係架,如果你覺得不寫if練功法太容易,你可以限制埋自己寫switch
range check唔係重點,用if之前讓自己三思,令自己討厭if
寧願寫for(){ if() } 都唔畀自己寫if(){}else if(){}else if(){}
寧願寫switch case都唔寫if

多數program switch case有個特性, 就係只做最簡單分類,基本上做logic flow既機會比較多, 我正正就係唔想係logic flow畀if出場


巴打想法認真幾好,又可以俾自己用下for,while個啲,唔會一味用死if,搞到for,while個啲用得唔熟,我自己就用太多if同for,搞到while,do while唔多識用,多得巴打提醒下,之後自己會注意多啲

for同while根本係兩個唔同目的,係絕對唔應該撈亂用。


自己因為新手上路真心唔係好完全識分咩時候用for更好,幾時用while更好。自己while又用得少,搞到極唔熟,有時候覺得while個度寫得啱,但又run唔到……所以自己下意識依靠多咗if同for,根本惡性循環,唔練多啲真係停滯不前

for (; true;){
}
while (true){
}
有咩唔同 ?

個人偏好用for 做 iterator. 個 for clause 控制個iteration flow, 主要係sequential 嘢同埋你大概知幾時完 (for each, for (int i = 0;i < arr.Length; i++) etc)
Loop through list and array 用while 都做到但 for 好似易睇啲


While 就係有個執行condition, 而係一真做至condition 唔再同為止
個condition 係code 入邊可能會改
While (condition) {
// condition might change here. Stops when it happens; break as needed
....
}

有時想行至少一次又可以用 do while

可以用for 做到個人鍾意寫for 多啲 感覺易明啲

手機打懶fix casing 梳

你講果堆咪其實係for while do while最基本原意


上邊有人問有乜分別同幾時用邊個

下次我答照個keyword 原意用囉


首先真係唔該巴打們咁用心俾建議我,又俾咗唔少概念我,我要用翻少少時間消化一下上面嘅嘢,希望可以完全清哂啲keyword嘅用法,自己真心想學好寫程式。再一次唔該巴打
2017-04-12 20:21:31
其實新手入門最好攝高枕頭諗下
之前d人設計呢個工具用意係邊

新手限制自己寫曲方向
我認為會走火入魔

好容易簡單複雜化
複雜愈搞愈複雜


多謝巴打嘅意見
2017-04-12 20:22:44
打搞下我重來未學過programming 但有興趣了解 接觸下 應該如何入手開始? 求引導
2017-04-12 20:23:51
打搞下我重來未學過programming 但有興趣了解 接觸下 應該如何入手開始? 求引導

你幾歲先
2017-04-12 20:36:31
何必驕枉過正, 我一直都係話三思先用if, if對底層係好重要
但好多時咩為之靚code唔係我扔條絕對rule出黎就可以寫到
寫code前三思好重要
2017-04-12 20:47:21
起ive 學完 vb 之後
發現自己可以理解到少少c++ code
但係都係睇唔明Python


仲有就要通宵dup code 效率高好多
2017-04-12 20:56:54

係架,如果你覺得不寫if練功法太容易,你可以限制埋自己寫switch
range check唔係重點,用if之前讓自己三思,令自己討厭if
寧願寫for(){ if() } 都唔畀自己寫if(){}else if(){}else if(){}
寧願寫switch case都唔寫if

多數program switch case有個特性, 就係只做最簡單分類,基本上做logic flow既機會比較多, 我正正就係唔想係logic flow畀if出場


巴打想法認真幾好,又可以俾自己用下for,while個啲,唔會一味用死if,搞到for,while個啲用得唔熟,我自己就用太多if同for,搞到while,do while唔多識用,多得巴打提醒下,之後自己會注意多啲

for同while根本係兩個唔同目的,係絕對唔應該撈亂用。


自己因為新手上路真心唔係好完全識分咩時候用for更好,幾時用while更好。自己while又用得少,搞到極唔熟,有時候覺得while個度寫得啱,但又run唔到……所以自己下意識依靠多咗if同for,根本惡性循環,唔練多啲真係停滯不前

for (; true;){
}
while (true){
}
有咩唔同 ?

個人偏好用for 做 iterator. 個 for clause 控制個iteration flow, 主要係sequential 嘢同埋你大概知幾時完 (for each, for (int i = 0;i < arr.Length; i++) etc)
Loop through list and array 用while 都做到但 for 好似易睇啲


While 就係有個執行condition, 而係一真做至condition 唔再同為止
個condition 係code 入邊可能會改
While (condition) {
// condition might change here. Stops when it happens; break as needed
....
}

有時想行至少一次又可以用 do while

可以用for 做到個人鍾意寫for 多啲 感覺易明啲

手機打懶fix casing 梳

萬一個iterator係冇Length,iterator只係知有冇next record, 咁樣情況用while, 會容易理解過for loop
例如sql cursor, stream, queue

其實都要睇下你用咩data structure同random access of element好似係
例如linked list random access由頭loop落去

list[9]: 0開始 loop到9
list[10]: 0開始 loop到10
2017-04-12 20:57:12
其實《Clean Code》歸納左好多寫靚code既skill
不過我個人對呢本書評分唔高,睇到訓著,但還是值得推薦

----------
再分享一下,如果有試過緊急補鑊,去maintain前人唔知寫左咩既legacy code, 好多時都會貪方便,用debugger trace到有問題既code上面直接用if 去判斷做hotfix....久而久之,好容易變成有一堆專處理special case既if...愈main 愈辛苦
2017-04-12 20:59:21
其實想學應該搵人出條題,之後大家一齊比較source code,就咁講好難講
2017-04-12 21:00:06
其實《Clean Code》歸納左好多寫靚code既skill
不過我個人對呢本書評分唔高,睇到訓著,但還是值得推薦

----------
再分享一下,如果有試過緊急補鑊,去maintain前人唔知寫左咩既legacy code, 好多時都會貪方便,用debugger trace到有問題既code上面直接用if 去判斷做hotfix....久而久之,好容易變成有一堆專處理special case既if...愈main 愈辛苦


仲有global variable到處非都係死罪

其實refactoring 入面提左一大堆bad smell, 睇晒佢起碼識得判斷自己係咪寫緊伏畀自己
https://sourcemaking.com/refactoring
2017-04-12 21:00:56

...

首先真係唔該巴打們咁用心俾建議我,又俾咗唔少概念我,我要用翻少少時間消化一下上面嘅嘢,希望可以完全清哂啲keyword嘅用法,自己真心想學好寫程式。再一次唔該巴打


其實簡簡單單睇下下面呢個post, 都已經好清楚了解到咩嘢情況下用乜嘢control structure啦,
唔一定限死自己只用for loop嘅!( Source: https://www.quora.com/Which-are-some-of-the-ways-to-identify-when-to-use-a-for-loop-versus-a-while-loop-versus-a-do-while-loop)

Which are some of the ways to identify when to use a for loop versus a while loop versus a do while loop?
2017-04-12 21:04:30
其實《Clean Code》歸納左好多寫靚code既skill
不過我個人對呢本書評分唔高,睇到訓著,但還是值得推薦

----------
再分享一下,如果有試過緊急補鑊,去maintain前人唔知寫左咩既legacy code, 好多時都會貪方便,用debugger trace到有問題既code上面直接用if 去判斷做hotfix....久而久之,好容易變成有一堆專處理special case既if...愈main 愈辛苦


仲有global variable到處非都係死罪

其實refactoring 入面提左一大堆bad smell, 睇晒佢起碼識得判斷自己係咪寫緊伏畀自己
https://sourcemaking.com/refactoring

遇過A class call B class
跟住B class call C class
跟住A class 用返個C class global varibale拎返data...
2017-04-12 21:05:26
打搞下我重來未學過programming 但有興趣了解 接觸下 應該如何入手開始? 求引導

每次有人話有興趣programming我都會推薦CS50
https://www.inside.com.tw/2014/12/17/harvard-cs50
2017-04-12 21:09:19
其實《Clean Code》歸納左好多寫靚code既skill
不過我個人對呢本書評分唔高,睇到訓著,但還是值得推薦

----------
再分享一下,如果有試過緊急補鑊,去maintain前人唔知寫左咩既legacy code, 好多時都會貪方便,用debugger trace到有問題既code上面直接用if 去判斷做hotfix....久而久之,好容易變成有一堆專處理special case既if...愈main 愈辛苦


仲有global variable到處非都係死罪

其實refactoring 入面提左一大堆bad smell, 睇晒佢起碼識得判斷自己係咪寫緊伏畀自己
https://sourcemaking.com/refactoring

遇過A class call B class
跟住B class call C class
跟住A class 用返個C class global varibale拎返data...

global左就斷左dependency...都未算係recursion
這樣是否正確其實好視乎個business domain決定
domain driven design有機會寫到易明既code....
2017-04-12 21:23:47
其實新手入門最好攝高枕頭諗下
之前d人設計呢個工具用意係邊

新手限制自己寫曲方向
我認為會走火入魔

好容易簡單複雜化
複雜愈搞愈複雜


多謝巴打嘅意見

我覺得有時要知下歷史...
先會明白點解依家啲野係咁
2017-04-12 21:36:05
靚 programme 一定係浸出來。因為你需要 大量 project 培養出一個 object oriented mindset。

但腦中緊守以下原則:
loose coupling,
autonomous,
reuse,
盡量避免 class inheritance,而採用 include 或 interface inheritance 達成功能擴展,
先用 interface 製訂 system structure

咁樣做出來嘅 code 一定靚
2017-04-12 21:38:11
靚 programme 一定係浸出來。因為你需要 大量 project 培養出一個 object oriented mindset。

但腦中緊守以下原則:
loose coupling,
autonomous,
reuse,
盡量避免 class inheritance,而採用 include 或 interface inheritance 達成功能擴展,
先用 interface 製訂 system structure

咁樣做出來嘅 code 一定唔會差
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞