【保姆级】C语言、C++、C#的区别和联系
C++是C语言的扩展,增加面向对象与泛型编程,二者血脉相连;C#虽名含“C”,实为微软2000年推出的独立语言,基于CLR虚拟机,与C/C++无继承关系。三者同居TIOBE前列,但渊源各异。
第118篇 const 与编译期常量:延迟初始化之外的第三个选择
`const val` 是 Kotlin 编译期常量,值在编译时内联到各使用点,字节码中无字段、零运行时开销,但**不二进制兼容**——改值后依赖方必须重编译,否则仍用旧值。适用于功能开关、注解参数等编译期确定场景;跨模块配置、敏感信息、需热更新者禁用。
第119篇 扩展属性与扩展伴生:工具方法的进阶形态
本节详解Kotlin扩展属性与伴生对象扩展:扩展属性无backing field,本质是静态getter/setter方法,每次访问均重计算;扩展伴生对象则为第三方类“添加静态方法”,语法简洁、语义清晰。二者均属编译期静态分派,不可覆盖,是检验Kotlin底层理解的关键点。
第120篇 tailrec 与尾递归:递归优化的编译期支持
`tailrec` 是 Kotlin 的编译期优化机制:当函数满足尾调用条件时,编译器将其重写为循环,避免栈溢出。它不依赖 JVM(JVM 无 TCO),而是 Kotlin 自主实现;不支持 `suspend`、非尾位置调用或需回溯的场景。本质是“递归定义 → 累加器循环”的转换。
第116篇 Kotlin 代码评审清单:团队规范与静态检查
本节聚焦Kotlin团队代码质量保障机制,提出“三层金字塔”模型:①工具层(ktlint/detekt/编译器)自动化查格式与确定性缺陷;②约定层(PR模板/基线/baseline)半强制落地规范;③设计层(架构/抽象/命名)依赖人工判断。核心是“机器管规则,人管设计”,避免告警泛滥与评审失焦。
第115篇 卫语句与早返回:可读性重构实战
本文详解Kotlin中“卫语句与早返回”这一关键编码纪律:通过`if`守卫、Elvis(?:)、`let`、`require`/`check`等机制,将异常路径前置处理,使正常逻辑平铺于外层,显著降低嵌套深度与认知负担。强调“守卫在前、主线平铺、缩进不超三层”,并厘清契约校验层次与常见误用陷阱。
第114篇 函数式编程思维:纯函数与副作用管理
本文是Kotlin函数式编程思维的收官总结,揭示其核心:**用不可变数据 + 纯函数 + 显式副作用组织代码**。提炼三条可落地纪律——①默认`val`、状态变更即生成新快照;②副作用(IO/UI/日志)推至边界层(ViewModel/Composable);③用不可变数据流替代可变共享。强调FP本质是工程纪律,非教条,重在提升可测性、可推理性与协作清晰度。
第112篇 Kotlin 2.x 演进:K2 编译器带来了什么
本节聚焦Kotlin 2.0编译器与工具链演进:核心是**K2前端重写(基于FIR)**,带来**编译提速、类型推断更准、插件生态更健壮**;同步推进KMP稳定化及上下文接收者、`guard`等语言实验特性。升级关键在**插件兼容性检查**与**隐式类型推断回归验证**。