Re: [討論] 請大家聊聊 JavaScript的缺陷
※ 引述《TonyQ (得理饒人)》之銘言:
: 是說應該要定義什麼是好什麼是爛,
: 我是覺得啦, 能解決問題叫好, 不能解決問題叫爛.
: 程式只是工具, 人才是決定 code 是不是垃圾的載體.
不太認同, 如果今天的task是計算1加到10000
從紙上開始 1 + 2 + 3...一直算到10000可以解決問題
用等差數列的公式也可以解決問題
寫段code直接寫個function讓function可以支援不同的min, max也同樣能解決問題
這些方法都能解決問題?難道他們都是好方法嗎?
回到程式語言, 我相信大部分人都覺得戰語言優劣很無聊
畢竟工程師都有自己偏好
但前端這塊就比較不一樣, 大部分人用JS不是因為喜歡或是適合
而是因為沒有別的選擇
前面在吵的web assembly目前來說生態系還差太遠
看起來它也是以補強而非取代JS為目的
為什麼近年TS開始紅起來
我認為不是像大大說的, 那是能力不足的人在用的
以同是動態語言的Python為例
typing模組不管是語言面和IDE的支援也都越來越完善
我待過的兩間公司也都規定新寫的code能加type hint就要加
不過Python雖是動態語言但卻是強型別, 跟JS還是有差就是了
在5人以上維護的專案中用了TS絕對對開發速度和維護性有顯著的幫助
光是在obj後面.一下就會跑出各種method和argument/return type
就不知道能避免多少低級錯誤和省下查文件翻code的時間了
所以說用TS會拖慢開發速度的人
我真的不知道他是在做什麼神奇的專案需要用到諸多JS的神奇特性
相關的webpack config也只要設定一次, 何樂而不為呢
當然你可以說, 只要平常規範足夠好, 大家團隊意識夠強
加上每個人記憶力超凡, 寫過的每個function是做什麼的都不會忘
每個人都是完美的JS programmer不會踩到一些不該踩的坑
那當然用JS也不會有太大問題
但我們都知道,
人 是一定會犯錯的
的確, TS不能解決所有問題, 但要把這鍋推給TS就有點詭異了
這個邏輯有點像:「反正用了也只是從30分到60分, TS真糞」
TS本來就是以盡量不破壞JS原有特性下改進JS的可讀性
拿any來說, 敝公司的tsconfig中是有設定nonImplicitAny
新寫的code中要用上any也必須給reviewer足夠好的理由
在prototype偷塞東西這種事情也是沒事不會做
除了一些很底層的模組, 例如支援mixin之類的
不要因一時貪圖方便造成後續難以維護
我認同大大說的, 的確沒有辦法控制整個世界照我們想要的規矩走
但這不是我們不能在力所能及的範圍內做到最好的藉口
--
推推,一些地雷在語言就應該設計好防呆掉,不是語言spec
寫爛了回來嗆開發者不夠熟語言
其實很多語言寫爛了直接在後面版本叫你不要用舊的寫法
推,說實話,連自己寫的 function 的 type 是什麼都搞不
清楚的人才是真的能力不足
推這篇
推
推
推這篇
推言簡意賅
團隊開發用JS真的是災難
3
npm 的問題,我試著安裝了一下 因為說是去年7月遇到的,所以我使用 2020/06/30 發佈的 node 12.18.2 搭配 npm 6.14.5 在只有裝 archiver-utils 的情況下,他很平,可能比我婆軟體還平 archiver-utils 底下沒有 node_modules , readable-stream 底下也沒有34
在開始之前,先說個笑話 ※ 引述《keev (a)》之銘言: : 我會試著反駁 互相交流 然而下面這串推文直接被無視 : 推 vi000246: 還要學打包工具 好麻煩 11/03 00:222
聽到你說 C# 一樣有 js 四捨五入的問題,我驚呆了,你肯定沒有嘗試過,沒關係,我幫 你試過了! 真不知道你的自信哪裡來的 我承認浮點數是個棘手的問題,但是有的語言會謹慎處理,有的語言就是隨便處理,事實X
其實我覺得戰場大家自己拉開的亂七八糟, 我也不過就是逐一回覆, autocomplete 我也說了根本不是語言的重點, 是其他人重視,這樣可以說你們在討論缺陷, 我在討論 autocomplete 我也覺得是有趣。3
你完全搞不清楚狀況喔。 dotnet 的 Math.Round() 預設是 四捨六入(五遇到前面為基數才進位)的設計,也就是 銀行家捨入法,也就是第三個參數為 ToEven 模式,我指定 AwayFromZero 是因為想走四 捨五入。 拔掉這個,走四捨六入也行,dotnet 就是照本宣科來,根本沒有你說的浮點數精確錯誤3
JavaScript 的概數運算確實沒有實作 IEEE 754 的標準, IEEE 754 中,Nearest value rounding 的方法有兩種: 1. Banker's rounding - 取到最接近的「偶數」 2. 取到最遠離 0 的數(效率佳) 但搞不清楚狀況的是對該語言不熟就隨便拿一個 function 來做概數的人,1
其實我上一篇已經有提到 Rounding mode 的選擇是關鍵了了, 然後那個不叫四捨六入...... 另外 tofixed 又誰跟你說他是四捨五入了.... 他是用浮點數的定位表示法(fixed-point notation) 計算的, 詳細實作有點囉嗦, 自己翻論文.17
我想 auto complete 可以算是開發工具的部分 (我猜任何語言理論上都可以有 auto complete,所以和語言本身無關) 而且在這篇沒看到原原 Po 提到,暫不討論 : 而且我還是那句話, 你今天碰到 ts 世界以外的模組, : 你是要怎麼 autocomplete 跟省時間.2
project scan 就是需要時間, 你檔案數多到一個程度, 就是慢. webpack 有那麼多 tooltip 再加速效能, 難道是假的. 說真的, 這段話反過來說也是可以還給你的. 連自己的 type 跟 convention 都掌握不好的, 是有什麼好靠邀的. 另外 js 的 autocomplete,2
有誰可以告訴我,JavaScript 的 toFixed()為什麼遇到1,4,7這幾個數字後面的5不會 進位呢? --
27
Re: [討論] 怎麼跟自以為是的同事相處提供一點不一樣的看法 ※ 引述《leo5916267 (封膜獵人)》之銘言: : 也許在軟體也蠻容易遇到類似個性的同事 : 我們是新創公司,我進去前已就有一個前端工程師,他從0建構了整個產品A 代表他能力不算差16
Re: [討論] 請大家聊聊 JavaScript的缺陷是說應該要定義什麼是好什麼是爛, 我是覺得啦, 能解決問題叫好, 不能解決問題叫爛. 但這就有一個操作空間, 就個人對語言的掌握程度/能力程度, 會影響到一個人對語言的判斷. 像是有人對直譯器(interpreter) 的理解不夠,18
Re: [請益] 轉職仔的語言選擇語言不是重點,要看接在什麼主題後面 學寫程式,語言不是重點(O) 轉職,語言不是重點(O) 領更高的薪水,語言不是重點(O) 但,目的是了解程式,語言就是重點了X
[討論] 遇到問題就workaround真的好嗎?我玩程式語言有時候會遇到一些程式語言本身定義就跟 我自己想做的運算互相衝突的時候。Python的string被 定義為immutable, 可是可以使用index的方式去存取 字元。 比方說:12
Re: [討論] 請大家聊聊 JavaScript的缺陷我覺得Javascript最大的問題是它是prototype語言,大家不習慣,尤其從class based語言來的人。 像我上禮拜在看web component的時候,看不懂一段程式。 if (this.hasOwnProperty(prop)) {8
Re: [心得] 提升 .Net 工程師薪資的 2 種做法: : 圖文並茂版: : : :3
Re: [討論] 請大家聊聊靜態語言的缺點借題發揮一下:static typed for the win 不過還是先切題回答「靜態語言的缺點」: 在大部分常用的靜態語言中,的確可能出現 valid program 不好標注 type 的情況 不過到底有多難標注就完全看是哪個語言跟哪個版本了 ------ 語言是最基礎到沒什麼好說嘴的東西 你應該學的是應用, 語言只是幫助你完成應用的工具 例如你想寫 image processing, 就挑一個喜歡的語言 然後看看有什麼 framework / tool 可以幫忙實作出想要的東西 大多數語言不外乎就是 primitive type / io / object oriented / syscall / etc
- 借串問,有人試過能否用 AI 延伸 existing code base 嗎? 如果是 existing code base 各種東西都包成模組或 function 例如對 elasticsearch 的操作全部都包成自訂 function 給 python 呼叫 如果讓 AI 讀 code base