去年開始接觸Flutter,已經有成功發佈到TestFlight,近期有一個自己的需求想要寫,於是又入坑Flutter
這次有看到幾個比較特別的無程式碼開發工具,好好研究了一下,搞不好是神器
三個工具比較
GitHub Copilot
優點
- 代碼補全與自動生成:基於 OpenAI 的 Codex 模型,GitHub Copilot 能夠在多種編程語言中實時提供代碼補全和生成建議,適合提升開發效率。
- 支援多種編程語言:不僅限於特定框架,Copilot 支援 JavaScript、Python、Ruby、Java 等多種語言,適合多樣化的項目需求。
- 集成於 IDE 中:Copilot 可無縫集成在常用的 IDE(如 VS Code、JetBrains 系列),開發者可以在熟悉的環境中使用,提升開發體驗。
- 適合不同類型的任務:能夠處理範圍廣泛的任務,從簡單的代碼片段補全到複雜的算法建議,幫助開發者加快進度。
缺點
- 對上下文理解有限:Copilot 是基於模型的上下文預測,有時候可能無法準確理解複雜的業務邏輯,生成的代碼可能不符合需求。
- 生成代碼的準確性不保證:在一些高複雜度的場景下,Copilot 生成的代碼可能有錯誤或需要調整,開發者需要有一定的能力來檢查和調試。
- 安全和隱私問題:Copilot 有時可能會生成基於公共代碼庫的相似代碼,這可能會帶來潛在的隱私和版權問題。
- 缺乏完整的架構生成能力:Copilot 更適合代碼片段和函數級的建議,而不適用於從頭生成應用的結構或架構。
DhiWise
優點
- 代碼生成結構清晰且工程化:生成的代碼更符合開發標準和架構,便於維護,適合希望快速生成高品質代碼的團隊。
- 支援多框架:DhiWise 支援 Node.js、React、Flutter 等多種框架,適合多平台應用的開發需求。
- Figma 整合:提供 Figma 插件,可將設計直接導入並生成程式碼,簡化設計與開發的轉換流程。
- 自定義邏輯和 API 支援:DhiWise 支援自定義邏輯和後端 API 整合,使開發人員能夠構建複雜應用,特別是需要後端支援的應用。
- 模組化代碼結構:生成的代碼有良好的模組化結構,便於重用和擴展,適合長期維護的應用。
缺點
- 複雜應用的靈活性有限:DhiWise 生成的代碼在高複雜度場景下可能無法靈活應對,尤其是需要高度定制的應用。
- 樣式和邏輯的分離有限:某些情況下,樣式和邏輯可能被硬編碼,增加了全局樣式變更的難度。
- 第三方庫整合的限制:雖然 DhiWise 支援一些常用第三方庫,但對自定義插件或不常用庫的支援可能較少。
- 學習成本較高:由於 DhiWise 面向開發者,無程式背景的使用者可能會覺得學習成本較高,尤其是在需要定制代碼時。
FlutterFlow
優點
- 簡單易用的無程式碼平台:FlutterFlow 提供視覺化的設計工具,特別適合無程式背景的使用者上手,適用於快速構建 MVP 和跨平台應用。
- 支援即時預覽和測試:內建即時預覽功能,開發人員可以快速查看應用效果,便於原型設計和快速迭代。
- Firebase 整合:支援 Firebase 認證、資料庫等功能,使得後端連接更加便捷,適合開發簡單後端需求的應用。
- 自動生成 Flutter 代碼:生成的代碼可以下載並在 Flutter 中進行自定義修改,方便進一步開發。
- 跨平台支援:生成的 Flutter 應用可以直接部署到 iOS 和 Android 平台,適合需要多平台支持的專案。
缺點
- 代碼結構較臃腫:FlutterFlow 生成的代碼可能包含多餘的 widget 層級和硬編碼樣式,降低了代碼的可讀性和可維護性。
- 複雜邏輯支援有限:對於需要高度自定義的邏輯和狀態管理的應用,FlutterFlow 支援較為有限,需要手動進行補充。
- 高級開發工具不足:相比於手寫 Flutter 代碼,FlutterFlow 缺乏進階的除錯、測試工具,對於需要進行深入性能優化的應用來說不夠理想。
- 樣式重用困難:生成的樣式多為硬編碼,缺少靈活的樣式管理,若需全局變更樣式,維護難度較大。
結論:
- GitHub Copilot:適合希望提升開發效率的工程師,尤其是在已有代碼基礎上進行補全和加速開發。
- DhiWise:適合需要產生具備工程標準的代碼、並且需要後端支援的應用,適合工程化需求較高的項目。
- FlutterFlow:適合快速原型設計或 MVP 開發,無程式背景的使用者或小型跨平台應用開發。
功能 | GitHub Copilot | DhiWise | FlutterFlow |
---|---|---|---|
優點 | 快速補全代碼、多語言支持、IDE 集成 | 代碼結構清晰、多框架支持、模組化結構 | 無程式碼、視覺化操作、Firebase 支持 |
缺點 | 理解上下文有限、生成代碼準確性不保證 | 複雜應用靈活性有限、樣式和邏輯分離不足 | 代碼臃腫、複雜邏輯支援有限 |
適合的應用場景 | 提高開發效率、快速生成代碼片段 | 希望工程化代碼且需後端整合的應用 | 原型設計、MVP 開發、簡單跨平台應用 |
代碼生成品質 | 片段級代碼生成,依賴上下文 | 工程化代碼,模組化結構,但靈活性受限 | 可執行 Flutter 代碼,但結構臃腫 |
學習難易度 | 適合熟悉程式語言的開發者 | 需要一定的程式基礎,無程式背景的用戶可能需適應 | 上手簡單,適合無程式背景的使用者 |
我自己個人的選擇
DhiWise根據官方介紹和影片,看起來生成出來的程式碼是蠻優質的,要能擴充出複雜需求,應該是沒問題,而且能先產出那些畫面和框架,剩下的只要根據框架去撰寫業務邏輯,這對於會寫程式只是不精Flutter的我非常友善
後續還要再做迭代新功能,要如何做
我繼續問ChatGPT他給我的答案是…
- 建立良好的代碼版本控制
- 使用 Git 或其他版本控制系統來管理代碼變更,特別是當初次從 DhiWise 生成代碼後。這樣可以追蹤每次變更,並且在出現錯誤時方便回滾到先前版本。
- 確保每次從 DhiWise 更新代碼或迭代新功能前,都創建新分支來進行開發,這樣可以避免直接在主分支上進行改動。
- 手動合併生成的代碼與現有代碼
- DhiWise 支援生成模組化和結構化的代碼,這樣您可以在現有專案中手動合併新增的代碼模組。由於新增的功能往往只是特定模組的變更,因此手動將生成的代碼合併進主分支,不會影響整個應用的基礎架構。
- 在每次增量更新時,確保只引入需要更新的代碼模組,例如某些新的 API 調用或視圖元件,而不會覆蓋整個應用的其他部分。
- 利用 DhiWise 的自定義代碼區塊
- DhiWise 支援在生成的代碼中嵌入自定義代碼區塊,這些區塊可以用來放置業務邏輯、狀態管理等特定功能。
- 自定義代碼區塊不會因後續 DhiWise 更新而被覆蓋,因此在後期的迭代中仍然可以保留,這有助於長期維護並避免覆寫原有邏輯。
- 使用 API 驅動的設計來擴展功能
- 將新功能設計成 API 驅動的模組,使前端代碼能夠隨著後端 API 的更新而自動獲得新的數據或邏輯支持。例如,新增的數據接口或新的數據模型可以通過 API 輕鬆整合到現有應用中。
- 這種方法能確保應用的邏輯和業務層分離,前端和後端的擴展互不干擾。
- 重複利用和擴展現有的組件和模組
- 使用模組化架構,將現有的代碼組件進行擴展或重用。例如,將原有的 widget 抽象為可重複使用的組件,這樣在新增功能時可以直接複用而無需重寫。
- 在 DhiWise 中將經常使用的元件和視圖抽象出來,以便在新功能中可以簡單地調用和擴展。
- 在 DhiWise 上逐步新增和測試新功能
- DhiWise 支援逐步地為應用添加新功能或模組。您可以先在 DhiWise 上構建新的功能模組,並在生成代碼之前進行測試,以確保其與現有應用兼容。
- 每次迭代前,先在 DhiWise 平台上模擬測試新的功能模組,確認功能模組無誤後再導出代碼進行合併,減少後期的錯誤修正。
- 進行代碼審查和測試
- 每次將 DhiWise 的代碼合併到應用中時,進行代碼審查,確保新的代碼不會對現有功能造成影響。
- 定期進行單元測試、整合測試和 UI 測試,以確保新功能不會影響應用的穩定性,並避免潛在的錯誤。
- 定期同步並更新 DhiWise 專案
- 當應用不斷迭代時,確保 DhiWise 專案和現有的代碼保持同步,並隨時將新的功能模組添加到 DhiWise 專案中。這樣可以保證將來的代碼生成能夠更符合現有應用的架構。
以上看起來是是可行的