點學寫靚PROGRAM

315 回覆
17 Like 1 Dislike
2017-04-27 15:03:56
雖然我自己做Programmer都係幾年時間,唔算長,我追完呢個POST都有好多位一頭煙/睇完好累
但我想問下寫靚Program唔係好應該見到咩CASE就應用番咩最好既工具咩 ,唔係應該寫完堆CODE之後,你睇落個logic係make sense,順眼架咩
我見到上面有D CASE明明直接可以用While,又要特登用For(;true;)咁,雖然呢D方法你要寫係可以While代替For,For可以代替While,但自問感覺係好怪好唔舒服
可能我真係無知,所以想請教下


做左就兩年, 基本上都係返工邊做邊學, 見到個Post啲 terms 真係R曬頭

邊啲term呀


Open Close Principle, FP, OOP ....等等

利申IVE仔, web developer要repeat 但走左去做front end

咁呢D好基本wor...Open Close Principle,FP,OOP應該讀完出黎都知咩黎既
我話頭痛係因為一黎見到成篇長文而我百思不得奇解點解要咁做,二黎我覺得因為一D野而唔用某D野我真係覺得唔舒服,正如日常生活中要解決問題都係揾最快最簡單既方法
我覺得打Program設計一個Application根本係可以同你日常生活一樣,我覺得邊樣野簡單,快咪用囉

common sense 依一樣野唔係人人都唔一樣,下一手做ge人未必覺得最快最簡單

咁我覺得code style唔係寫到一岩一忽,個logic寫得合理都易follow
btw 我講緊用既工具唔洗咁規限姐,唔係話common sense
2017-04-27 16:48:15
雖然我自己做Programmer都係幾年時間,唔算長,我追完呢個POST都有好多位一頭煙/睇完好累
但我想問下寫靚Program唔係好應該見到咩CASE就應用番咩最好既工具咩 ,唔係應該寫完堆CODE之後,你睇落個logic係make sense,順眼架咩
我見到上面有D CASE明明直接可以用While,又要特登用For(;true;)咁,雖然呢D方法你要寫係可以While代替For,For可以代替While,但自問感覺係好怪好唔舒服
可能我真係無知,所以想請教下


做左就兩年, 基本上都係返工邊做邊學, 見到個Post啲 terms 真係R曬頭

邊啲term呀


Open Close Principle, FP, OOP ....等等

利申IVE仔, web developer要repeat 但走左去做front end

咁呢D好基本wor...Open Close Principle,FP,OOP應該讀完出黎都知咩黎既
我話頭痛係因為一黎見到成篇長文而我百思不得奇解點解要咁做,二黎我覺得因為一D野而唔用某D野我真係覺得唔舒服,正如日常生活中要解決問題都係揾最快最簡單既方法
我覺得打Program設計一個Application根本係可以同你日常生活一樣,我覺得邊樣野簡單,快咪用囉

common sense 依一樣野唔係人人都唔一樣,下一手做ge人未必覺得最快最簡單

咁我覺得code style唔係寫到一岩一忽,個logic寫得合理都易follow
btw 我講緊用既工具唔洗咁規限姐,唔係話common sense

我指日常生活 ge common sense
2017-04-27 17:15:28

但呢個真係一個好問題

呢個話題繼續討論落去之前要先定義好咩為之FP
仲有Java8如何使用FP,Java8到底仲係咪OOP

stateless極其量只係immutable, 未同fp有關係住

fp最基本有higher order function,
compose function with functions, currying果類野

我唔熟java, 直接評論唔到


我個人追求既係FP style所帶來既好處, 而唔會盲目追FP

C# 既 delegate又點睇

係呀, 攞佢d著數就好夠
尤其係返工邊用得呢d野姐,
但係基本用immutable interface,
用下d map/reduce func,
成個program都已經唔同哂
最緊要隔離位唔會鬧你

fp都係得閒自己學下野寫下就夠

c#太耐冇寫, delegate有少少似java interface?
c#我印象中都係java咁, 不過佢個syntax好好多

delegate係類似function object既物體

我記得佢嘅用途大約好似java呢種用法

xxx.addXXXListener(new XXXInterface {
Foo foo() { /* do something */ }
});

學過下fp之後諗番其實佢都係想pass個function
delegate嘅目的都好似係咁上下, syntax唔同

成日都覺得java嘅lambda暗瓦底都係new interface

jvm will generate an anonymous interface in runtime and the lambda will become an instance of that interface.
2017-04-27 18:59:37
之前學校project做隻OpenGL既氣墊球game,隊友做OpenGL,我用JS寫個game logic比佢port過去。

想知道大家點睇我啲code 睇下可以點樣改進下

( ~200 lines )
https://github.com/mingchoi/air-hockey-physics/blob/master/physics.js
2017-04-27 19:05:23
之前學校project做隻OpenGL既氣墊球game,隊友做OpenGL,我用JS寫個game logic比佢port過去。

想知道大家點睇我啲code 睇下可以點樣改進下

( ~200 lines )
https://github.com/mingchoi/air-hockey-physics/blob/master/physics.js

得呢頁係你寫? btw 你個樣
2017-04-27 19:06:31
之前學校project做隻OpenGL既氣墊球game,隊友做OpenGL,我用JS寫個game logic比佢port過去。

想知道大家點睇我啲code 睇下可以點樣改進下

( ~200 lines )
https://github.com/mingchoi/air-hockey-physics/blob/master/physics.js

得呢頁係你寫? btw 你個樣

就咁睇我覺得幾乾淨
2017-04-27 19:20:02

stateless極其量只係immutable, 未同fp有關係住

fp最基本有higher order function,
compose function with functions, currying果類野

我唔熟java, 直接評論唔到


我個人追求既係FP style所帶來既好處, 而唔會盲目追FP

C# 既 delegate又點睇

係呀, 攞佢d著數就好夠
尤其係返工邊用得呢d野姐,
但係基本用immutable interface,
用下d map/reduce func,
成個program都已經唔同哂
最緊要隔離位唔會鬧你

fp都係得閒自己學下野寫下就夠

c#太耐冇寫, delegate有少少似java interface?
c#我印象中都係java咁, 不過佢個syntax好好多

delegate係類似function object既物體

我記得佢嘅用途大約好似java呢種用法

xxx.addXXXListener(new XXXInterface {
Foo foo() { /* do something */ }
});

學過下fp之後諗番其實佢都係想pass個function
delegate嘅目的都好似係咁上下, syntax唔同

成日都覺得java嘅lambda暗瓦底都係new interface

jvm will generate an anonymous interface in runtime and the lambda will become an instance of that interface.

delegate= type safe function pointer
其實以前c 有function pointer
其中一個例子qsort
https://www.tutorialspoint.com/c_standard_library/c_function_qsort.htm
2017-04-27 19:44:37
之前學校project做隻OpenGL既氣墊球game,隊友做OpenGL,我用JS寫個game logic比佢port過去。

想知道大家點睇我啲code 睇下可以點樣改進下

( ~200 lines )
https://github.com/mingchoi/air-hockey-physics/blob/master/physics.js

Shape入面都有hittest可以用,做咩自己reinvent the wheel?
2017-04-27 20:10:39
之前學校project做隻OpenGL既氣墊球game,隊友做OpenGL,我用JS寫個game logic比佢port過去。

想知道大家點睇我啲code 睇下可以點樣改進下

( ~200 lines )
https://github.com/mingchoi/air-hockey-physics/blob/master/physics.js

得呢頁係你寫? btw 你個樣

就咁睇我覺得幾乾淨


個IIFE係幾乾淨, 係個好傳統嘅ES5寫法, 裏面啲variable declaration置咗頂, 有效防止hoisting of variables from inner control structures. 裏面亦有利用hoisting of function declaration to take advantage of global functions. 但一向比較前衛嘅我偏向用番最新嘅ES6寫法, 完全唔用var, 會轉晒做const (except those loop control structures where I will use "let"). 同埋所有functions跟variables一樣置頂, 連hoisting of function declaration都避免埋(N.B. This style of programming in JS can effectively avoid the accidental pollution of undefined variables or functions caused by the default hoisting behaviour of JS)!

Anyway, 呢啲係personal style問題, 樓主可以totally ignore啲!
2017-04-27 20:11:59
之前學校project做隻OpenGL既氣墊球game,隊友做OpenGL,我用JS寫個game logic比佢port過去。

想知道大家點睇我啲code 睇下可以點樣改進下

( ~200 lines )
https://github.com/mingchoi/air-hockey-physics/blob/master/physics.js

Shape入面都有hittest可以用,做咩自己reinvent the wheel?

library唔帶過去C++
二來point hit test會overlap 自己寫可以加番radius落去
2017-04-27 20:16:54
[純粹無知一問]
其實呢 有無人諗過將成套clean code concept 放入一套language入面

如果佢錯少少格式, style唔岩, 強制地連compile都唔俾過 逼人去寫靚code

2017-04-27 20:17:09
之前學校project做隻OpenGL既氣墊球game,隊友做OpenGL,我用JS寫個game logic比佢port過去。

想知道大家點睇我啲code 睇下可以點樣改進下

( ~200 lines )
https://github.com/mingchoi/air-hockey-physics/blob/master/physics.js

得呢頁係你寫? btw 你個樣

就咁睇我覺得幾乾淨


個IIFE係幾乾淨, 係個好傳統嘅ES5寫法, 裏面啲variable declaration置咗頂, 有效防止hoisting of variables from inner control structures. 裏面亦有利用hoisting of function declaration to take advantage of global functions. 但一向比較前衛嘅我偏向用番最新嘅ES6寫法, 完全唔用var, 會轉晒做const (except those loop control structures where I will use "let"). 同埋所有functions跟variables一樣置頂, 連hoisting of function declaration都避免埋(N.B. This style of programming in JS can effectively avoid the accidental pollution of undefined variables or functions caused by the default hoisting behaviour of JS)!

Anyway, 呢啲係personal style問題, 樓主可以totally ignore啲!

如果唔係本身熟d build tool, 佢set up得黎份功課dead左都未做
2017-04-27 20:17:26
[純粹無知一問]
其實呢 有無人諗過將成套clean code concept 放入一套language入面

如果佢錯少少格式, style唔岩, 強制地連compile都唔俾過 逼人去寫靚code


你講go?
2017-04-27 20:26:09
[純粹無知一問]
其實呢 有無人諗過將成套clean code concept 放入一套language入面

如果佢錯少少格式, style唔岩, 強制地連compile都唔俾過 逼人去寫靚code


你講go?

就算冇go咁極端, 真係連compiler都唔過,
坊間都有好多linter有predefined/custom rules比你用,
等你唔過lint就唔比你build project
2017-04-27 20:31:29
[純粹無知一問]
其實呢 有無人諗過將成套clean code concept 放入一套language入面

如果佢錯少少格式, style唔岩, 強制地連compile都唔俾過 逼人去寫靚code


你講go?


呢位巴打 我唔太熟GO
不過可以舉d例子, 好似python 咁 佢有最基本既space (tab) checking 去令到個program readable

見上面咁多巴打對上手爛code 改到媽媽聲 就起到諗緊會唔會真係有一款language係專門solve呢個問題

好似 if 入面 唔俾超過幾多行line, 唔俾多重else if

if () {

}elseif () {

}elseif(){

}
仲限制到唔俾有callback hell 個d野出現咁 一定要用promise ...etc
a(function (value){
b(value, function(value2){
...etc
}
})

逼住一定一定要用同一款style 黎寫code 每個implement 都係best practise
一定要用clean code黎寫 呢個諗法會唔會偏激左d
純粹係突然諗到 問下大家
2017-04-27 20:32:55
之前學校project做隻OpenGL既氣墊球game,隊友做OpenGL,我用JS寫個game logic比佢port過去。

想知道大家點睇我啲code 睇下可以點樣改進下

( ~200 lines )
https://github.com/mingchoi/air-hockey-physics/blob/master/physics.js

得呢頁係你寫? btw 你個樣

就咁睇我覺得幾乾淨


個IIFE係幾乾淨, 係個好傳統嘅ES5寫法, 裏面啲variable declaration置咗頂, 有效防止hoisting of variables from inner control structures. 裏面亦有利用hoisting of function declaration to take advantage of global functions. 但一向比較前衛嘅我偏向用番最新嘅ES6寫法, 完全唔用var, 會轉晒做const (except those loop control structures where I will use "let"). 同埋所有functions跟variables一樣置頂, 連hoisting of function declaration都避免埋(N.B. This style of programming in JS can effectively avoid the accidental pollution of undefined variables or functions caused by the default hoisting behaviour of JS)!

Anyway, 呢啲係personal style問題, 樓主可以totally ignore啲!

如果唔係本身熟d build tool, 佢set up得黎份功課dead左都未做


你啱, 用咗ES6/ES6+寫法會太潮而多數要用番如Babel咁轉番做ES5先交到畀人用!
2017-04-27 20:35:36
之前學校project做隻OpenGL既氣墊球game,隊友做OpenGL,我用JS寫個game logic比佢port過去。

想知道大家點睇我啲code 睇下可以點樣改進下

( ~200 lines )
https://github.com/mingchoi/air-hockey-physics/blob/master/physics.js

Shape入面都有hittest可以用,做咩自己reinvent the wheel?

library唔帶過去C++
二來point hit test會overlap 自己寫可以加番radius落去

我覺得可以自己抽番個rectangle object同circle object出嚟,開個library compare兩個object而唔係compare coordinate
日後如果改左做三角形或者其他形狀,可以唔洗改game logic
2017-04-27 20:38:49
[純粹無知一問]
其實呢 有無人諗過將成套clean code concept 放入一套language入面

如果佢錯少少格式, style唔岩, 強制地連compile都唔俾過 逼人去寫靚code


你講go?


呢位巴打 我唔太熟GO
不過可以舉d例子, 好似python 咁 佢有最基本既space (tab) checking 去令到個program readable

見上面咁多巴打對上手爛code 改到媽媽聲 就起到諗緊會唔會真係有一款language係專門solve呢個問題

好似 if 入面 唔俾超過幾多行line, 唔俾多重else if

if () {

}elseif () {

}elseif(){

}
仲限制到唔俾有callback hell 個d野出現咁 一定要用promise ...etc
a(function (value){
b(value, function(value2){
...etc
}
})

逼住一定一定要用同一款style 黎寫code 每個implement 都係best practise
一定要用clean code黎寫 呢個諗法會唔會偏激左d
純粹係突然諗到 問下大家


Best practice嘅嘢有時幾主觀, 我覺得唔可以強求!
2017-04-27 20:39:11
[純粹無知一問]
其實呢 有無人諗過將成套clean code concept 放入一套language入面

如果佢錯少少格式, style唔岩, 強制地連compile都唔俾過 逼人去寫靚code


你講go?


呢位巴打 我唔太熟GO
不過可以舉d例子, 好似python 咁 佢有最基本既space (tab) checking 去令到個program readable

見上面咁多巴打對上手爛code 改到媽媽聲 就起到諗緊會唔會真係有一款language係專門solve呢個問題

好似 if 入面 唔俾超過幾多行line, 唔俾多重else if

if () {

}elseif () {

}elseif(){

}
仲限制到唔俾有callback hell 個d野出現咁 一定要用promise ...etc
a(function (value){
b(value, function(value2){
...etc
}
})

逼住一定一定要用同一款style 黎寫code 每個implement 都係best practise
一定要用clean code黎寫 呢個諗法會唔會偏激左d
純粹係突然諗到 問下大家

我都唔熟go, 不過佢符合你果個"d code唔靚唔比你compile"嘅條件
python既space v.s. tab為人垢病左好耐, 因為有d hihi撈黎用
go直頭講明要用tab, 而且d struct definition裡面嘅冒號定等於都要拍齊

至於比幾多重if else, callback hell, 呢d都應該係linter做嘅野,
可以視乎你有幾緊張某d rule, 去決定要出lint error或者warning
但實際有冇呢兩樣野config我就唔清楚
2017-04-27 20:40:05
[純粹無知一問]
其實呢 有無人諗過將成套clean code concept 放入一套language入面

如果佢錯少少格式, style唔岩, 強制地連compile都唔俾過 逼人去寫靚code


你講go?


呢位巴打 我唔太熟GO
不過可以舉d例子, 好似python 咁 佢有最基本既space (tab) checking 去令到個program readable

見上面咁多巴打對上手爛code 改到媽媽聲 就起到諗緊會唔會真係有一款language係專門solve呢個問題

好似 if 入面 唔俾超過幾多行line, 唔俾多重else if

if () {

}elseif () {

}elseif(){

}
仲限制到唔俾有callback hell 個d野出現咁 一定要用promise ...etc
a(function (value){
b(value, function(value2){
...etc
}
})

逼住一定一定要用同一款style 黎寫code 每個implement 都係best practise
一定要用clean code黎寫 呢個諗法會唔會偏激左d
純粹係突然諗到 問下大家

雖然排位差同爛code無太大關係
但我都認同排位差既
唔會好得去邊
2017-04-27 20:40:29
[純粹無知一問]
其實呢 有無人諗過將成套clean code concept 放入一套language入面

如果佢錯少少格式, style唔岩, 強制地連compile都唔俾過 逼人去寫靚code


你講go?


呢位巴打 我唔太熟GO
不過可以舉d例子, 好似python 咁 佢有最基本既space (tab) checking 去令到個program readable

見上面咁多巴打對上手爛code 改到媽媽聲 就起到諗緊會唔會真係有一款language係專門solve呢個問題

好似 if 入面 唔俾超過幾多行line, 唔俾多重else if

if () {

}elseif () {

}elseif(){

}
仲限制到唔俾有callback hell 個d野出現咁 一定要用promise ...etc
a(function (value){
b(value, function(value2){
...etc
}
})

逼住一定一定要用同一款style 黎寫code 每個implement 都係best practise
一定要用clean code黎寫 呢個諗法會唔會偏激左d
純粹係突然諗到 問下大家


Best practice嘅嘢有時幾主觀, 我覺得唔可以強求!

咁巴打要試下download個go compiler落黎比佢玩下啦
2017-04-27 20:44:25
其實python個indent based syntax有d問題,
佢會令到你用唔到editor嘅auto formatting
原因係佢冇close block

寫過下python script,
有時褪錯位真係望好耐先見到點解個loop有d部分淨係最後一次先有行
2017-04-27 20:44:52
[純粹無知一問]
其實呢 有無人諗過將成套clean code concept 放入一套language入面

如果佢錯少少格式, style唔岩, 強制地連compile都唔俾過 逼人去寫靚code


你講go?


呢位巴打 我唔太熟GO
不過可以舉d例子, 好似python 咁 佢有最基本既space (tab) checking 去令到個program readable

見上面咁多巴打對上手爛code 改到媽媽聲 就起到諗緊會唔會真係有一款language係專門solve呢個問題

好似 if 入面 唔俾超過幾多行line, 唔俾多重else if

if () {

}elseif () {

}elseif(){

}
仲限制到唔俾有callback hell 個d野出現咁 一定要用promise ...etc
a(function (value){
b(value, function(value2){
...etc
}
})

逼住一定一定要用同一款style 黎寫code 每個implement 都係best practise
一定要用clean code黎寫 呢個諗法會唔會偏激左d
純粹係突然諗到 問下大家

雖然排位差同爛code無太大關係
但我都認同排位差既
唔會好得去邊


呢啲係咪叫「人靠衣裝,code靠排位。」呢?!
2017-04-27 20:48:24
其實python個indent based syntax有d問題,
佢會令到你用唔到editor嘅auto formatting
原因係佢冇close block

寫過下python script,
有時褪錯位真係望好耐先見到點解個loop有d部分淨係最後一次先有行


Python同Haskell個indentation都一9樣咁麻煩, 冇法!
2017-04-27 21:36:49
其實python個indent based syntax有d問題,
佢會令到你用唔到editor嘅auto formatting
原因係佢冇close block

寫過下python script,
有時褪錯位真係望好耐先見到點解個loop有d部分淨係最後一次先有行

如果你見其他人寫code褪錯位,會唔會想鬧佢先?
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞