news 2026/5/8 16:38:18

Kotlin vs Dart:当“优雅”变成心智负担,我选择了更简单的 Dart

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kotlin vs Dart:当“优雅”变成心智负担,我选择了更简单的 Dart

大家好,我是老刘

老刘做Flutter开发有7年了差不多。

我记得早先的时候还经常有人讨论为啥Flutter没有选择kotlin而是选了dart。

当时我罗列和很多原因,同时也说过我个人其实是很喜欢Kotlin的。

想当年,Kotlin 就是拯救我们脱离Java 苦海的。

优雅的 Lambda 表达式、丝滑的集合操作符,效率直接起飞。

但是这两年我发现自己越来越不喜欢用kotlin 而是更适应dart了。

你可能会说:“老刘,这是因为你最近只写 Flutter 吧?”

确实,Flutter的开发工作占比重很大是一个因素。

但如果仅仅是因为框架绑定,还不足以让我改变对一门语言的喜好程度。这背后,其实有着自己对编程的理解和思考。

Kotlin 很强,但 Dart 更香

Kotlin 确实是个强大的语言,各种语法糖简直甜到心里。

空安全、扩展函数、高阶函数,用起来那是真香。

但是,这种强大是要付出代价的,而这个待机通常是开发人员的心智成本。

写 Kotlin 的时候,我脑子里经常要多跑一个线程:这块逻辑是用apply还是also?是用let还是run

// 这种纠结时刻都在发生,仅仅是初始化一个对象:// 写法1:用 apply (上下文是 this, 返回对象本身)valview=TextView(context).apply{text="Hello"textSize=16f}// 写法2:用 also (上下文是 it, 返回对象本身)valview2=TextView(context).also{it.text="Hello"it.textSize=16f}// 写法3:用 run (上下文是 this, 返回最后一行结果)valview3=TextView(context).run{text="Hello"textSize=16fthis// 如果忘了这一行,view3 就是 Unit}

同样的一个功能,可能有五六种写法,每种都有细微的差别。这种问题在团队协作时尤为明显,每个人的风格都不一样,看别人的代码有时候得脑补半天。

最重要的是他会打破写代码时心流的状态。

反观 Dart,刚开始接触时觉得它有点土。

但用久了你就会发现,这种“平平无奇”才是真爱。

Dart 的语法设计非常克制,它不追求炫技,而是追求直观。

写 Dart 的时候,我不需要在大脑里时刻绷着根弦去纠结语法细节,直接顺着逻辑写下去就行。

// 同样的逻辑,Dart 的解决方案通常只有一种 —— 级联操作符 (..)// 不需要纠结是用 apply 还是 run,也不用担心 this 和 it 混淆varview=TextView(context)..text="Hello"..textSize=16;

代码写出来,三个月后再看,还是能一眼看懂。

这种特质,让我在开发时能更专注于业务逻辑本身,而不是语言特性。

这一点在日常开发中其实是非常重要的。

开发人员的逻辑思路不会经常因为语法问题而打断,一方面能提高效率,另一方面也会大大减少心智负担,不会写一会代码就感觉很累。

AI 时代的生存法则

让我内心的天平彻底偏向 Dart 的最后一块砝码,其实是 AI。

在这个 AI 辅助编程的时代,我们必须认识到一个事实:目前的 AI 模型,本质上还是一个强大的模式匹配机器,它是个“直肠子”,远没有进化到能进行深度逻辑思考的程度。

而 Dart 这种平平无奇的语法,恰恰是 AI 最喜欢的。

因为它足够简单、直观、显式。AI 读得快、懂的透、写得准。

反观那些拥有丰富语法糖和黑魔法的语言,虽然对人类专家来说写起来很爽,但对 AI 来说,却成了幻觉的温床。过多的隐式上下文和多样的语法选择,大大增加了 AI 犯错的概率。

在 AI 时代,谁的代码能让 AI 更好理解、更容易生成,谁就是赢家。

以前我们追求代码要写给人看,现在可能还要加一条——写给 AI 看。简单直白的代码,不仅人类维护起来轻松,AI 辅助生成的准确率也会显著提高。

这才是 AI 时代的生存法则:摒弃花哨,回归朴素。

重剑无锋大巧不工

年轻的时候总想着怎么实现最复杂的功能,怎么把语言特性用到极致。

那时候觉得,能把一行代码写得像天书一样难懂,才叫水平。

但随着年岁渐长,写过的代码越来越多,填过的坑也越来越深,我开始慢慢领悟到“重剑无锋,大巧不工”的真谛。

现在的我,编码风格发生了巨大的转变。不再追求那些花哨的语法糖和所谓的“黑魔法”,而是更倾向于简单、直接、健壮的代码。

举个最直接的例子,以前我很痴迷于各种自动化的依赖注入框架。觉得写个注解,对象就自动注入进来了,多酷啊,多省事啊。

// 以前觉得很酷的“黑魔法”@InjectlateinitvaruserService:UserService// 它是从哪来的?谁初始化的?完全是黑盒。

但现在,我反而更喜欢手动管理依赖,甚至就是最原始的通过构造函数参数传递。

// 现在更喜欢的“笨办法”classUserViewModel{finalUserServiceservice;// 一切都在阳光下,没有秘密UserViewModel(this.service);}

看起来这种方式有点笨,写起来也没那么灵动。但它的好处是显而易见的:直观、清晰。

数据的流向一目了然,依赖关系清清楚楚。出了问题,不用去翻框架源码猜它是怎么注入的,看一眼调用栈就能定位。

我们写代码,最终目的是为了解决问题,为了让系统稳定运行,而不是为了炫技。

哪怕抛开 AI 不谈,我也更愿意写这种一眼就能看懂的代码。

因为它经得起时间的考验,也经得起团队协作的折腾。这把“重剑”,虽然没有锋刃,但挥舞起来,却是最扎实的内功。

当然,必须要承认的是,如果是在构建一个依赖关系错综复杂的超大型系统,或者需要极其严格的解耦和动态替换实现,成熟的依赖注入框架依然是不可或缺的神兵利器。但在我们大多数的日常开发,尤其是 Flutter 这种重 UI、重逻辑直观性的场景下,盲目引入复杂的框架,往往是杀鸡用牛刀,反而增加了维护成本。

5. 总结

从最初沉迷于 Kotlin 的语法糖和“黑魔法”,到如今偏爱 Dart 的朴素与直观,这不仅是编程语言的选择转变,更是对代码本质认知的转变。

另一方面这也是在强大的语法糖和简洁的心智模型中找到一个更适合自己的平衡点。

在 AI 辅助编程日益普及的今天,简单、显式的代码不仅降低了开发者的心智负担,更成为了 AI 理解与生成的最佳载体。

摒弃花哨,回归代码解决问题的本真,Less is More,这或许才是我们在 AI 时代应有的生存法则。

如果看到这里的同学对客户端或者Flutter开发感兴趣,欢迎联系老刘,我们互相学习。

私信免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。

可以作为Flutter学习的知识地图。

—— laoliu_dev

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 4:00:44

9个AI论文平台推荐,自考本科毕业论文轻松搞定!

9个AI论文平台推荐,自考本科毕业论文轻松搞定! AI工具如何助力自考论文写作 在当前的学术环境中,AI工具已经成为许多学生和研究者不可或缺的助手。尤其是在自考本科毕业论文的撰写过程中,AI不仅能够提高效率,还能有效降…

作者头像 李华
网站建设 2026/5/4 10:15:08

测试工程师的AI工具箱大公开:智能测试的进化之路

第一章 智能测试时代的范式转移2025年的软件测试领域正经历AI驱动的深度变革。根据Gartner最新报告,全球75%的企业已将AI工具集成至测试全流程,测试工程师的核心能力模型正从「用例执行者」向「AI协作者」转型。本章将解析四大关键趋势:自愈式…

作者头像 李华
网站建设 2026/5/3 21:31:36

智能客服意图识别精准度优化:测试从业者的实战指南‌

在人工智能驱动的客服系统中,意图识别的精准度直接影响用户体验和企业效率。作为软件测试从业者,我们肩负着确保系统可靠性的重任——精准识别用户意图(如查询订单、投诉处理或产品推荐)是智能客服的核心挑战。据统计,…

作者头像 李华
网站建设 2026/5/7 8:16:00

buuctf中的[HarekazeCTF2019]baby_rop2

首先checksec检查保护机制:-64位程序-开启了栈不可执行保护题目还附带了libc库文件,点击就能下载接下来使用IDA反汇编分析一下:buf到栈底的距离为0x20个字节,但是下面的read函数却读入了0x100个字节的数据,可以触发栈溢…

作者头像 李华
网站建设 2026/5/7 17:22:38

心理咨询行业技术发展现状与创新实践分析

行业痛点分析当前心理咨询行业在数字化转型过程中面临多重技术挑战。传统服务模式受限于时空壁垒,难以满足突发性心理援助需求,而线上平台普遍存在服务碎片化、专业资质核验机制不完善等问题。数据表明,我国有超过16%的成年人存在不同程度心理…

作者头像 李华