Flutter 毀了客戶端和 Web 開發(fā)!
點擊“開發(fā)者技術前線”,選擇“星標”
讓一部分開發(fā)者看到未來

轉自:英文:Luke Urban,翻譯:CSDN
原文鏈接:https://itnext.io/flutter-is-no-longer-a-cross-platform-framework-b53c87b14c39
Google 重磅發(fā)布了專為 Web、移動和桌面而構建的 Flutter 2.0!將 Flutter 從移動開發(fā)框架擴展成可移植框架,因而開發(fā)者無需重寫代碼即可將應用擴展至桌面或網(wǎng)頁。看似為了幫助Web和移動開發(fā)者,實際上不然,而本文作者認為,現(xiàn)在不應該再去想創(chuàng)建一個需要部署到所有平臺的應用程序,Flutter反而毀了Web和移動開發(fā)。
大家好,我是一名軟件開發(fā)人員,我叫 Luke。
由于我選擇了這個相當大膽的標題,為了避免誤會,我要對其進行詳細的解釋。從技術角度來講,F(xiàn)lutter 的確是一個跨平臺的框架。也不止其,所有跨斷技術都是非常糟糕的設計。
但是,我有點不同的看法。
從 Flutter 2.0 發(fā)布以來,我就察覺到它被炒的有點過了。但不應該再去想創(chuàng)建一個需要部署到所有平臺的應用程序,Flutter反而毀了Web和移動開發(fā)。
請不要誤會,我并不是要否定它,其實我也是 Flutter 的粉絲,亦將一如既往的擁護它。
我在日常工作中經(jīng)常使用 Flutter 來開發(fā) iOS 和 Android 應用程序。由于早前我是用 Kotlin 或者 Swift 來開發(fā)原生的應用,支持多種特性,如:掃描 / 頁面識別、pin/biometric 應用程序認證、通知、firebase 統(tǒng)計和一些高級的用戶流,現(xiàn)在用 Flutter 來開發(fā)應用,我對 Flutter 的優(yōu)缺點的了解更加透徹。
1、六大平臺

我的一個非常好的朋友 Filip Hracek 在 Flutter Engage 演講中提到“神奇的設計開發(fā)者”的相關話題,我非常贊同他的看法。我認為需要有更多的開發(fā)者真正知道他們正在做的是什么,而且不是盲目地跟從迭代面板。
*Scrum Sprint* 是一個可重復的固定時間框,在這個時間框內創(chuàng)造一個高價值的產(chǎn)品。-- 維基百科
強烈推薦大家觀看 Filip 在 Youtube 上的相關視頻片段https://www.youtube.com/watch?v=MIepaf7ks40。
接下來,我們重新回到 Flutter 這個話題:
2、不應該再去想創(chuàng)建一個需要部署到所有平臺的應用程序
你更應該去想如何將你要編寫的應用程序模塊化,以便在未來更好地復用這些模塊。給你們舉個例子:在我的公司,我們正在開發(fā)專注于用戶數(shù)據(jù)的應用程序。
這就需要創(chuàng)建自定義和高級的調查報告,我們不希望每次添加新問題時都要編寫新的窗口小部件。我們的做法是:編寫一個包含所有可能的調查邏輯的模塊,在許多其他項目中復用它(而不需要每次都重寫一遍相似的代碼)
我給你舉上面這個例子的目的是提醒你在構建一個應用程序時,你更應該著重思考你要做的應用程序或整個業(yè)務的重點是什么。更應該去重點思考,它背后的業(yè)務邏輯是什么?
在計算機軟件中,業(yè)務邏輯或領域建模也是程序的一部分,它對真實世界的業(yè)務規(guī)則進行編碼,確定如何創(chuàng)建、存儲和修改數(shù)據(jù)。
當你明確了領域劃分,你可以將一個領域封裝成獨立的模塊,你可以將該模塊在需要開發(fā)的 Flutter 應用程序中復用。
但 Luke,這有什么好大驚小怪的嗎?
對,這是一個好問題!
對于相同的業(yè)務邏輯,你可以用不同的用戶流來創(chuàng)建多個 Flutter 應用。你可以將要開發(fā)的 Flutter 應用進行分類(如:移動應用、桌面應用和 Web應用),這將能幫助關注到不同平臺的差異,對特定平臺進行特定處理最終將獲得更好的用戶體驗。
3、針對不同平臺要編寫多個應用程序
雖然 Flutter 還算是一個相對比較新的技術,還主要針對小公司和個人開發(fā)者,但這不妨礙它成為一個人人皆可用的偉大工具。
我參與開發(fā)過多個企業(yè)級應用程序。根據(jù)我的經(jīng)驗,系統(tǒng)的每個部分都需要有一個清晰的工作流程。開發(fā)一個系統(tǒng)通常需要前端、后端等。為了節(jié)約成本,編寫一個應用程序,在不同的平臺運行也越發(fā)流行。為了實現(xiàn)這個目的,你需要雇一個團隊進行專門開發(fā)。你敢想象,十幾個人的團隊開發(fā)同一套代碼來實現(xiàn)所有平臺的特性嗎?這簡直是管理層的噩夢。很可能出現(xiàn):一部分開發(fā)人員開發(fā)的桌面特性與移動團隊正在開發(fā)的特性相沖突的情況。
其次,應用程序包也會越來越臃腫,然而很多時候并不是每個平臺都需要有一份軟件包。現(xiàn)在,正值 Flutter 2.0 發(fā)布的時候,由于我并沒有將所有的包都進行升級,還不支持 null 安全還需要手動解決依賴沖突的問題。
4、為什么 Flutter 不是一個跨平臺的框架
在讀了這篇文章之后,或許你能夠理解為什么我會認為 Flutter 不是一個真正的跨平臺框架。Flutter 是一個為我們提供了為每個平臺構建應用程序所需的功能的工具。我認為,真正實現(xiàn)跨平臺不應該只開發(fā)一個應用程序,更應該開發(fā)一組由相同的業(yè)務邏輯驅動的應用程序集合。
此外,當我們編寫 Flutter 應用程序時,我們并沒有跨越任何平臺。我們這種所謂的跨平臺,不過是用 Xamarin 或其他工具將寫好的代碼翻譯成原生元素。
如果非要把 Flutter 和其他東西進行類比的話,那么與之相似的就是游戲引擎(如 Unity)。我們不需要專門在 Windows 或者 Mac 系統(tǒng)上開發(fā)對應平臺的游戲。我們可以使用 Unity 編寫,然后將其導出到一個特定的平臺。使用 Unity 編寫一個游戲然后導出到多個平臺和真正的跨平臺完全也是兩碼事。
因為每個項目都有技術債務,你應該停止抱怨,并開始重構。每次開發(fā)新功能之前都應該進行小型代碼重構。但接入 Flutter 大規(guī)模的重構和重寫永遠不會有好結果。
5、結尾
全文都在討論跨平臺相關話題, 以上就是我認為 flutter 毀了 Web 開發(fā)的原因。很多人對這一說法很感興趣,并熱切地加入了辯論。如果你認為 flutter 并沒有那么糟糕,或許你會持有不同意見,如果你喜歡本文,歡迎點贊評論和我交流。
— 完 —
點這里??關注我,記得標星呀~
前線推出學習交流一定要備注:研究/工作方向+地點+學校/公司+昵稱(如JAVA+上海
掃碼加小編微信,進群和大佬們零距離
后臺回復“電子書” “資料” 領取一份干貨,數(shù)百面試手冊等
