class InTheVehicleFragment : FragmentCompat() { private val presenter = InTheVehiclePresenter(this)
companion object { fun newInstance(): InTheVehcleFragment { return InTheVehicleFragment() } } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_in_the_vehicle, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) presenter.setup() initView() initListener() } private fun initView() { //setInCarNum(25) } private fun initListener() { container_add_car_plate_num.setOnClickListener { presenter.gotoAddCarPlate() } container_car_open_order.setOnClickListener { presenter.gotoSerOrder("") } } fun httpError() { rcv_today_cars.visibility = View.GONE container_loading.visibility = View.GONE container_fail.visibility = View.VISIBLE container_fail.setOnClickListener({ presenter.fetchHistoryCars() }) } fun httpSuccess() { rcv_today_cars.visibility = View.VISIBLE container_fail.visibility = View.GONE container_loading.visibility = View.GONE } fun setTodayRv(mAdapter: InTheVehicleAdapter) { rcv_today_cars.setupVertical() rcv_today_cars.adapter = mAdapter } fun nodify() { rcv_today_cars.post { rcv_today_cars.adapter.notifyDataSetChanged() } }
}
写的我好难受啊
![]() | 1 lwbjing 2018-09-26 14:30:49 +08:00 他们都跟我说未来会多。。 |
![]() | 2 luopengfei14 2018-09-26 14:38:24 +08:00 via iPhone 楼主思想上被草多了,就习惯了 |
![]() | 3 firefffffffffly 2018-09-26 14:53:02 +08:00 感觉写得还可以啊,习惯两天就真香了,不过我们屏蔽了不经过 findViewById 直接操作 view 的写法 还有个代码精简点 fun newInstance() = InTheVehicleFragment() |
![]() | 4 loshine1992 2018-09-26 14:54:49 +08:00 ![]() kotlin 还没 release 的时候就在用了,真香。 |
![]() | 5 hjw45611 2018-09-26 15:16:06 +08:00 私人项目在用,公司项目不让用。 |
![]() | 6 M0 2018-09-26 15:17:49 +08:00 滚回 java 了。 |
7 youxiachai 2018-09-26 15:20:45 +08:00 ....你都用 kotlin 插件了..为啥...id 命还要按照下弧线那套..直接用驼峰啊... |
8 GoodRainChen 2018-09-26 16:34:48 +08:00 ![]() 之前公司用过一段时间,然后慢慢又用回 java 了...没有任何原因,就大家不约而同 没发现有什么本质上的优势,写代码最花时间的还是思考,而不是打字 |
9 closedevice 2018-09-26 17:03:11 +08:00 不推荐花时间在 Kotlin 上,本质没有变化. |
10 shawndut 2018-09-26 17:13:53 +08:00 还好吧,用起来可以缩减代码量,语法糖有些多 |
![]() | 11 66450146 2018-09-26 17:33:52 +08:00 我们不写 Kotlin 已经招不到人了,孤狗肯定不愿意在 Java 上吊死 |
![]() | 12 Maiiiiii 2018-09-26 17:52:17 +08:00 写多一点就适应了,感觉比 java 方便 |
![]() | 13 KNOX 2018-09-26 18:23:49 +08:00 via iPhone @GoodRainChen 是不是你们用 java 的思维去写?我是觉得 kotlin 需要深入理解才能写好。 |
14 whitepoppy OP @loshine1992 老哥啊 我是真不想写 我来的时候那个 sb 就已经用 kotlin 了 |
![]() | 15 qiyuey 2018-09-26 18:29:41 +08:00 via Android 服务端开发,全 Kotlin |
16 icris 2018-09-26 18:29:52 +08:00 |
17 whitepoppy OP @GoodRainChen 我同意 浪费时间 没以前写的顺手了 写起来太别扭了 |
![]() | 18 loshine1992 2018-09-26 18:33:42 +08:00 ![]() @whitepoppy #14 骂别人 sb 的时候想想自己为什么不拥抱变化,为什么不愿意学习。 拿着工资还可以学东西是多好的事情啊 而且会 Java 的人学 Kotlin 真的成本超低,2~3 天就可以上手,1 周看完一些特性就可以无缝使用了 |
19 icris 2018-09-26 18:35:32 +08:00 推荐几行代码 inline fun View.gone() { visibility = View.GONE } inline fun View.visible() { visibility = View.VISIBLE } inline fun View.invisible() { visibility = View.INVISIBLE } inline fun View.visibleOrGone(visible: Boolean) { if (visible) visible() else gone() } inline fun View.visibleOrInvisible(visible: Boolean) { if (visible) visible() else invisible() } 就可以 rcv_today_cars.gone() 这样再用回 Java 写 setVisibility 的时候就会难受了。 |
20 whitepoppy OP @loshine1992 这话你怎么不和金融行业的说呢 公司项目要的是稳定 自己另说 不写也可以 但他封装的东西 比起 java 还难写 还不让改 |
![]() | 21 loshine1992 2018-09-26 18:43:21 +08:00 |
22 sampeng 2018-09-26 18:45:49 +08:00 ![]() kotlin 是唯一一个改善让我觉得 java 系还能一战的语言。 每个特性都是为了节省时间和吸收其他现代化语言设计的。。每个特性都爱不释手。。。 用 kotlin 和用 java 的思维去写代码不知道哪里冲突了。。。。。。 ps:lz 写的还蛮好的啊。。。 |
23 whitepoppy OP @loshine1992 那倒是好了哦 关键不让啊 非要按他的要求写 天天还沾沾自喜 233 |
24 storypanda 2018-09-26 18:47:42 +08:00 via Android 让我想起了我当时选择 Swift 和 OC 的抉择,但 Android 自学我选择 Java |
25 GoodRainChen 2018-09-26 18:49:08 +08:00 ![]() @icris 首先,我没打算否认 kotlin 的代码更加简洁,有他的先进性(当然,我个人用着其实也不算太舒服,先搁置这个问题) 但是,这些便捷对于开发效率,正如我之前写的,提升没有想象中的显著。写过一段时间就会发现,kotlin 对于类型安全等方面的限制更加严格,把简化写法带来的优势抵消了不少。 相反地,便捷的语法、简化的语法糖,势必带来代码阅读需要更多的思考,哪怕你觉得微不足道,但是积累起来也是影响效率的。毕竟你看代码思考要转个弯,没有 java 那么傻瓜(直白)。举个例子,B.setXXX(A) 简化成 B.XXX = A,代码上 set 改成了=,省不了两个字符,但是屏蔽了 setXXX 是个 method 的事实,也许别人就在这个 setXXX 里做了计算逻辑,你看代码的时候很容易不小心漏过去。这只是个例子,你可能有办法反驳我,但是我希望我的意思能传达到 |
26 xd314697475 2018-09-26 18:53:52 +08:00 官方没支持时就在用了,比 java 爽吧 |
![]() | 27 loshine1992 2018-09-26 18:55:49 +08:00 |
28 whitepoppy OP @loshine1992 什么 boss 都是搬砖的 |
29 whitepoppy OP @xd314697475 不爽 我感觉差别不大 |
30 lucky2Javascript 2018-09-26 19:32:00 +08:00 现在用 flutter 写 |
![]() | 31 xiaoshenke 2018-09-26 19:51:55 +08:00 via Android 不多 我就不用 |
32 icris 2018-09-26 19:59:41 +08:00 @GoodRainChen #25 从下往上说。 首先 getter setter 也不是 kotlin 首创,你可以观察观察 C# 程序员对 Java 的 set 方法什么评价。同时,方法调用者不需要也不应该关心方法内部逻辑。如果看一个 x.a = 1 你不知道里面有没有计算逻辑,那么如何知道 x.setA(1); 里面有没有计算逻辑?如果一样不知道,这一项打平没毛病吧? 那么便捷的语法对代码阅读需要的思考量会增多吗?我觉得会减少。对于语句 x.toJson() 和语句 objectMapper.writeValueAsString(x) ,哪一个能一眼看出在做什么? 再往上,类型安全限制,就是非空呗?首先自己写的 kotlin 方法和属性能不能空完全自己控制,Java 代码没有明确注解的都是 String! 类型,做不做检查都不会报错,Java 代码标注 Nullable 的你写 Java 不也得写一块儿检查?如果区别是 kotlin 必须检查而 Java 可以不检查让它运行时空指针,那我是只看出来好处。 但看起来楼主是来喷人的,在这讨论这些意义不大。 |
33 GoodRainChen 2018-09-26 20:15:38 +08:00 @icris “如果看一个 x.a = 1 你不知道里面有没有计算逻辑,那么如何知道 x.setA(1); 里面有没有计算逻辑”。 x.setA(1)更接近本质,而 x.a = 1 是封装了一层的简化版本。实际工作中不关心他人代码的内部逻辑是很难的,场景很多:比如新人入职、新接手模块,又或者做 review,又或者定位问题,尤其是小团队或者小组负责人,每个人都必须对项目整体了如指掌。屏蔽越多本质上的细节,意味着越容易让人的思维被误导 第二点其实就是说到了这个 kotlin 麻烦的地方,目前 Android SDK 就是用 java 写的,kotlin 自己玩,对于空值的保护确实不错。但是带上 Java 写的 AndroidSDK,就有了不少的麻烦,两种语言之间的类型转换让事情变麻烦了 再说下去有点类似争 XX 语言天下第一了。我也觉得意义不大。 所以我再总结一下我的观点,kotlin 不坏,但是似乎没有好到顶着招聘和学习成本去强制引入它,尤其是如果其他同事不喜欢 kotlin,那更是带来内部矛盾,得不偿失 |
![]() | 34 mmdsun 2018-09-26 20:18:58 +08:00 via Android 没有本质变化。Java13 估计 var 携程 扩展函数 都会有了 |
35 icris 2018-09-26 20:44:13 +08:00 @GoodRainChen #33 第二点我觉得我已经说清楚了,我再试着解释解释。注解 Nullable 的,具体举例 protected void onCreate(@Nullable Bundle savedInstanceState), 它在 kotlin 里调用的时候提示是 onCreate(savedInstanceState: Bundle?) , 注解了 NonNull 的 public void onSupportActionModeStarted(@NonNull ActionMode mode), 它在 kotlin 里调用的时候提示是 onSupportActionModeFinished(mode: ActionMode), 没注解的,具体举例 public void setContentView(View view) , 它在 kotlin 里提示是 setContentView(view: View!), 无论哪一种,正常逻辑都跟 Java 里调用是一样的流程( Java 用的 if 逻辑 kotlin 也能用,kotlin 的 ? 逻辑 Java 不能用,这一条显然是 Java 更麻烦 ),非正常逻辑下区别是调用 onSupportActionModeFinished(null) 在 Java 里可以正常编译等运行时报空指针,Java 里的 onCreate 里面可以直接用 savedInstanceState 而不需要判断非空等第一次打开 Activity 报空指针。我觉得这个能力真是毫无用处。 第一点,就按你的需求来,在 Java 中,如果你要看 setXXX 内部逻辑,你要看到一个 setXXX 就点进去看看;在 kotlin 中,同样的需求,你可以看到一个等号就点进去看看;如果 Java 里这个 setXXX 是 Lombok 生成的,甚至点进去看的时候都同样跳转到声明处。我没感觉出来区别。 |
36 GoodRainChen 2018-09-26 20:53:36 +08:00 @icris 就以 setContentView(view: View!)为例 假设这个 setContentView 是我写的,我明确知道 view 逻辑上根本不可能为 null,但是在这里被转换成了 View!类型,是不能和 View 通用的,我得加一步转换,否则每处用到这个 view 的地方都要加"?"来处理。 而在原本的 java 里,我这里不需要任何额外操作 |
37 icris 2018-09-26 21:01:30 +08:00 @GoodRainChen #36 首先,你这个逻辑是错的。setContentView 是你写的,那是谁在调用 setContentView ?你自己调用你知道,团队成员调用你也知道?他们调用传个 null 进来,你是不是要崩? 而此时如果你们用 kotlin,这个方法就可以是 setContentView(view: View) ,谁也不会传 null 进来。 其次,这个方法不是你写的,它本来就可以给个 null,如果你重写方法并不处理 null,总有第三方库会让它出错。 |
38 GoodRainChen 2018-09-26 21:07:33 +08:00 @icris 由外部保证参数的合法性,否则直接崩溃反而比较好。就像有些方法判断参数合法性,不合法直接扔一个参数不合法的异常出来,直接崩了。这是很常见的一种模式。 那我再换个,不是入参,是返回值,比如 xxx.toString() 从 Java 拿过来 String!,明明可以确认这玩意儿不可能为空,还是要判空,不是给人添麻烦吗? |
39 icris 2018-09-26 21:09:15 +08:00 @GoodRainChen #36 等等,你好像挖了个坑给我,标注 ! 的东西作为方法返回值类型时在 kotlin 里根本不需要判断非空也不需要加 ? 调用,作为参数重写的时候可以自己选择加不加可空,你说的不能和非空类型通用的是 savedInstanceState 这样的 Nullable 的 东西 |
![]() | 40 theworldsong 2018-09-26 21:13:08 +08:00 公司项目使用。全线在用。 |
41 icris 2018-09-26 21:17:13 +08:00 @GoodRainChen #38 常见的模式是判断了再抛异常出去,直接报空指针可不常见(要说常见倒也常见,只是这种时候可算不上模式)。 建议打开 IDE 写几行试试看,别靠猜。推荐测试方法 getMenuInflater(),kotlin 里的 menuInflater,类型 MenuInflater!,看看不加问号报不报警告。 |
![]() | 42 crist 2018-09-26 21:20:29 +08:00 哈哈哈哈哈哈哈哈哈 |
43 icris 2018-09-26 21:20:48 +08:00 ![]() @GoodRainChen #38 我也再复制一个正常的不接受空参数的方法的实现供参考 @Override public ActionMode startSupportActionMode(@NonNull final ActionMode.Callback callback) { if (callback == null) { throw new IllegalArgumentException("ActionMode callback can not be null."); } ... } |
![]() | 44 abeholder 2018-09-26 21:31:49 +08:00 kotlin 挺好的啊,上半年的时候有几天下午在公司划水,就看了下官网的语法,然后把以前写的猜单词的小程序用 kotlin 实现了下。 感觉用起来比 java 真的要舒服很多诶。。 但是之后一直没用过,现在基本上 kotlin 的语法已经忘的差不多了。。 然后这个程序我也已经看不懂了。。。 https://github.com/abedormancy/ToyPrograms/blob/master/src/game/kotlin/GuessWord.kt ,有没 kotlin 大佬帮忙看下各种语法是否使用得当。。。0 0. |
![]() | 46 kaedea 2018-09-26 21:47:27 +08:00 via Android 协程都出稳定版了,为啥还不用... |
47 cgpiao 2018-09-26 21:55:14 +08:00 via ihone ![]() 根本原因还是思维的懒惰,你用 kotlin 还在用死板的 java 思想,当然怎么写都不爽。何不培养 kotlin 的思想呢,我觉得现代语言肯定比旧的语言好的,因为没有陈旧的历史包袱,不用做那些痛苦的妥协。 |
![]() | 48 grantonzhuang 2018-09-26 22:15:31 +08:00 via Android kt 好用的地方除了空值判断这个,各种默认 final 也挺好的。主要不在于技巧和写法,而在于思想。 |
![]() | 49 grantonzhuang 2018-09-26 22:16:11 +08:00 via Android 如果只是简单的把 Java 的逻辑翻译成 kt,那确实没啥必要去换 |
50 icris 2018-09-26 22:34:03 +08:00 ![]() @abeholder #44 放到 IDEA 里,很多语法优化建议都会给出弱警告,比如一些变量提示可以私有的,比如 it.trim().length > 0 会提示 Replace size check with 'isNotEmpty' ,按提示会修改成 it.trim().isNotEmpty()。 还有一些无关紧要的不会提示的地方,比如 it.trim().isNotEmpty() 还可以改成 it.isNotBlank() , .filter { it == answer[0] }.length 可以改成 .count { it == answer[0] },这些方法都是只要看见有这个方法就知道怎么用的,我觉得没必要特别记忆,写个点想要什么就打什么,有方法就用,没方法的经常用的话也可以造个方法用,写得跟写英语一样就行了。 |
![]() | 52 bumz 2018-09-26 23:38:43 +08:00 Kotlin 是 IDE 公司设计的,Java 是程序语言领域的大师级人物设计的,于是你发现所有那些擅长 marketing 的叫嚣着替代 Java 的语言,其实最终都不如 Java |
53 whitepoppy OP @icris 思维方式不是怎么好改的啊 有方便的地方也有不好的地方 还是觉得那个顺手就用那个 |
54 icris 2018-09-27 00:04:40 +08:00 @bumz #52 这个于是起什么作用?为什么不如,哪不如?大师级人物干什么都是大师级,大师级人物的 NetBeans 怎么没人用呢? |
55 huclengyue 2018-09-27 00:06:34 +08:00 via Android kotlin 加 anko 真香 |
![]() | 56 bumz 2018-09-27 01:20:32 +08:00 @icris #54 阅读偏正短语的时候要注意定语。 「程序语言领域的大师级人物」、「 IDE 公司」都是偏正短语。 「于是」后面的是按照现有的信息对未来的期望,这点从「最终」一词的使用就可以看出了。 既然是期望,「哪里」、「为什么」就是次要的问题。这就好比「百度出品」和「 Google 出品」的差别一样。 |
57 icris 2018-09-27 09:02:54 +08:00 @bumz #56 那原因不问,展望一下擅长 marketing 的叫嚣着替代 Java 的 C# 未来将会如何吧,毕竟是微软做的。 |
![]() | 58 dagger2 2018-09-27 09:13:22 +08:00 我用 kotlin 就一个原因,kotlin 写出来的代码更漂亮,能让我开心。。。 |
59 fan123199 2018-09-27 09:17:46 +08:00 Kotlin 太好用了, 就用 function extension 和 入表达式,就够了。写起来飞快,简直是封装中的封装。然后一些 list,map 等的操作语法糖,让人爱不释手。 但是, 在我用了一段时间后还是发现一些问题。1,团队合作的问题。太简化,就需要理解。这个要看风格大家能不能互相接受。如果风格一致,那么大家都开心。2 , 搜索定位。 比如以前搜 setText,我可以知道哪里进行了文字设置。但现在不行了,全是等号。 Android 上很多调用时频繁且繁琐的,能简化一点代码就简化一些。每次写 java 版的 dialog 就感觉在浪费生命。 最后。Kotlin 大法好。 |
60 ayayui 2018-09-27 09:22:57 +08:00 能用 Kotlin 的时候我都不想用 Java |
![]() | 61 davy1995 2018-09-27 09:29:13 +08:00 via Android 这个时候还有吐槽没 get 到 kotlin 的好处的吧,就好比吃水果吃了水果皮没吃到果肉吧 |
![]() | 62 wupher 2018-09-27 09:31:03 +08:00 服务端自己负责的一个项目,目前是全 kotlin。 Android 只有私人项目了。 写习惯 kotlin 和 Groovy 后,我自己是非常讨厌写 Java 了。不过,kotlin 对型别有时要求过于严格,有时也挺麻烦的。 |
63 notreami 2018-09-27 09:32:49 +08:00 你们用吧,反正最后还是需要深入了解 java |
![]() | 64 chocotan 2018-09-27 09:37:22 +08:00 多不多,看别人的统计结果吧 https://www.oschina.net/news/97762/the-state-of-kotlin-2018 ----- 前两天看到我们公司一个安卓项目已经在用 kotlin 写了 |
65 closedevice 2018-09-27 09:40:52 +08:00 以为大家都在谈语言的本质,而非语法,但看下来全程是谈语法的... |
66 icris 2018-09-27 09:44:26 +08:00 @closedevice #65 本质还是 JVM 语言,编译出来 .class 再反编译回去还是 Java,不谈语法有什么好谈的 |
67 icop 2018-09-27 09:52:07 +08:00 最主要的是看公司整体用什么。 |
69 closedevice 2018-09-27 10:44:19 +08:00 @icris 这一个本质背后蕴藏的体系非常庞大,只谈语法却是小了格局. |
![]() | 70 zhangwugui 2018-09-27 10:48:32 +08:00 感觉是思维的一个转换。 |
![]() | 71 xuhaoyangx 2018-09-27 10:50:40 +08:00 本质来说 kotlin 其实还是一对语法糖,但是真香 |
72 GoodRainChen 2018-09-27 10:52:26 +08:00 |
![]() | 73 bumz 2018-09-27 11:00:28 +08:00 |
74 icris 2018-09-27 11:04:50 +08:00 @GoodRainChen #72 你还在说 setContentView,这个方法根本没有标 NonNull,打开 IDE 看看这种 View! 的东西怎么处理的吧,别老给我挖坑了。 我反正已经复制了一个 Google 写的判断参数是 null 就抛异常的 startSupportActionMode 方法出来,你可以认为这完全是浪费时间,就算不写也是一个 NullPointerException,我只能说这是正常逻辑该有的操作。 还有,不是「没发现有什么本质上的优势,写代码最花时间的还是思考,而不是打字」吗,怎么连个 if (x == null) 都没时间写了?既然确实要这点儿时间,那 kotlin 优势不就又出来了? |
75 icris 2018-09-27 11:12:50 +08:00 @bumz #73 第一,外包公司也用 Java (同时外包公司不用 kotlin )。 第二,你前一句说要展望未来来着,看今天市占有什么用,.net 开源才刚开始。 第三,我试着理解一下你的逻辑:为什么 Java 好,因为它是「程序语言设计专家」开发的,为什么「程序语言设计专家」是「程序语言设计专家」,因为他开发了 Java ;为什么说微软没有「程序语言设计专家」,因为 C# 不好,为什么 C# 不好,因为它不是「程序语言设计专家」开发的。是这样吗? |
76 GoodRainChen 2018-09-27 11:19:19 +08:00 @icris 唉,我打个比方,你非得揪着这个真实的方法不放,难道要我顶着安全红线把公司业务代码拿出来讨论吗? 我们纠结这个问题的原点是: [kotlin 对于类型安全等方面的限制更加严格,把简化写法带来的优势抵消了不少] 你说你代码简洁,省点时间,结果全在别的地方把省的时间又找回来了,这没多大优势啊 |
78 auhah 2018-09-27 11:22:06 +08:00 挺香的。。。写起来蛮爽 视野之内全是干货的感觉,冗余代码少了很多 |
79 icris 2018-09-27 11:23:39 +08:00 ![]() @GoodRainChen #76 我再说一遍,你说的关于 kotlin 的 ! ? 限制,全是错的。我已经说了实际上 kotlin 是怎么处理 Java 方法定义的,你不愿意听不愿意看不愿意试,也行,至少结论应该是「 kotlin 对于类型安全等方面的限制更加严格,可以节省更多写 if (x == null) 的时间」。 |
80 zzzmode 2018-09-27 11:31:42 +08:00 用 kotlin 可以少写很多代码 |
![]() | 81 xayoung 2018-09-27 11:32:24 +08:00 iOS 来问下,kotlin 会有 swift 那样重新学几遍的困境么? (几个项目经历了 2.1->2.2->3.0->4.1->4.2,打开 Xcode 面对成千上万个错误就想死) |
82 GoodRainChen 2018-09-27 11:34:33 +08:00 @icris 还是你自己去试试吧,或者是因为后面插件又跟新了? 反正我这里直接 onCreate 里面直接用 savedInstanceState.getString("") 是会提示错误的:Only safe(?.)or non-null ..... |
![]() | 83 bumz 2018-09-27 11:40:24 +08:00 @icris #75 1. 凶手也用菜刀,但是菜刀不止凶手用,大厨也用。暗器只有凶手用。 2. C# 已经快二十年了,在今天二十年的时间意味着什么已经不用多说了。 3. 专家设计的语言不见得好,好的语言也不见得是专家设计的。但是绝大多数专家设计的语言比绝大多数业余人士设计的语言好,绝大多数优秀的语言是专家设计的。前者是二者的因果关系,后者是相关性,请勿混为一谈。 |
84 icris 2018-09-27 11:42:27 +08:00 @GoodRainChen #82 savedInstanceState: Bundle? view: View! 挑一个说到底,别跳着来。推荐测试语句 menuInflater.inflate(0, null),menuInflater 是 MenuInflater! 那么这样一个 Bundle? 的对象,我前几楼也说了,我复制一下: 「 Java 里的 onCreate 里面可以直接用 savedInstanceState 而不需要判断非空等第一次打开 Activity 报空指针。我觉得这个能力真是毫无用处。」 在 kotlin 里不能方便地报空指针对工作有什么不好的影响吗? |
![]() | 86 bumz 2018-09-27 11:58:52 +08:00 @icris #85 这就是另一个帖子了 简单来说 C# is sort of Java with reliability, productivity and security deleted. 例如 C# 没有 Checked exception (一个很多人恨的特性,但其实他们只是恨写出可靠的程序罢了) 再比如 C# 混乱的 IDisposable |
87 icris 2018-09-27 12:06:33 +08:00 @bumz #86 我实际上还可以继续提问,为什么 C# 没有 reliability 而 Java 有 reliability,为什么 C# 没有 productivity 而 Java 有 productivity,为什么 C# 没有 security 而 Java 有 security,但是算了,if you say so. |
![]() | 88 zt1991616 2018-09-27 12:15:27 +08:00 ![]() Android 圈也和前端圈一样了?有啥好吵的,爱用用,不爱用别用,又没人强迫你 |
![]() | 89 TheWalkingDead 2018-09-27 13:54:16 +08:00 用什么语言总体还是看公司需要,看 leader 安排,不过用小众语言的人总是自带优越感 |
![]() | 90 Tyanboot PRO @xayoung 不会。只有实验性的功能才可能会被改掉,比如协程的支持。其他的用了这么久了还没有过破坏性改动。 |
91 icris 2018-09-28 23:32:17 +08:00 @TheWalkingDead #89 事实表明 Java 程序员才有优越感,上面不用 kotlin 的很多表示看不起 kotlin (「你们用吧,反正最后还是需要深入了解 java 」(试图表达一个 kotlin 程序员都不懂 Java 的意思)、「 Kotlin 是 IDE 公司设计的」( Java 大于一切,语法吊打 C#)、楼主所有发言)。 或者你是要表达 Java 在 Android 开发上算小众?毕竟现在 Google 的文档示例代码都把 kotlin 放前面,你这么说也没问题。 |