whitepoppy
V2EX  ›  Android

想问问现在用 kotlin 写 android 的多吗

  •  
  •   whitepoppy · Sep 26, 2018 · 20107 views
    This topic created in 2959 days ago, the information mentioned may be changed or developed.

    class InTheVehicleFragment : FragmentCompat() { private val presenter = InTheVehiclePresenter(this)

    companion object {
        fun newInstance(): InTheVehicleFragment {
            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()
        }
    }
    

    }

    写的我好难受啊

    91 replies  •  2018-09-28 23:32:17 +08:00
    lwbjing
    lwbjing
    Sep 26, 2018
    1
    他们都跟我说未来会多。。
    luopengfei14
    luopengfei14
    Sep 26, 2018 via iPhone
    2
    楼主思想上被草多了,就习惯了
    firefffffffffly
    firefffffffffly
    Sep 26, 2018
    3
    感觉写得还可以啊,习惯两天就真香了,不过我们屏蔽了不经过 findViewById 直接操作 view 的写法

    还有个代码精简点
    fun newInstance() = InTheVehicleFragment()
    loshine1992
    loshine1992
    Sep 26, 2018❤️1
    4
    kotlin 还没 release 的时候就在用了,真香。
    hjw45611
    hjw45611
    Sep 26, 2018
    5
    私人项目在用,公司项目不让用。
    M0
    M0
    Sep 26, 2018
    6
    滚回 java 了。
    youxiachai
    youxiachai
    Sep 26, 2018
    7
    ....你都用 kotlin 插件了..为啥...id 命还要按照下弧线那套..直接用驼峰啊...
    GoodRainChen
    GoodRainChen
    Sep 26, 2018❤️2
    8
    之前公司用过一段时间,然后慢慢又用回 java 了...没有任何原因,就大家不约而同
    没发现有什么本质上的优势,写代码最花时间的还是思考,而不是打字
    closedevice
    closedevice
    Sep 26, 2018
    9
    不推荐花时间在 Kotlin 上,本质没有变化.
    shawndut
    shawndut
    Sep 26, 2018
    10
    还好吧,用起来可以缩减代码量,语法糖有些多
    66450146
    66450146
    Sep 26, 2018
    11
    我们不写 Kotlin 已经招不到人了,孤狗肯定不愿意在 Java 上吊死
    Maiiiiii
    Maiiiiii
    Sep 26, 2018
    12
    写多一点就适应了,感觉比 java 方便
    KNOX
    KNOX
    Sep 26, 2018 via iPhone
    13
    @GoodRainChen 是不是你们用 java 的思维去写?我是觉得 kotlin 需要深入理解才能写好。
    whitepoppy
    whitepoppy
    OP
    Sep 26, 2018
    14
    @loshine1992 老哥啊 我是真不想写 我来的时候那个 sb 就已经用 kotlin 了
    qiyuey
    qiyuey
    Sep 26, 2018 via Android
    15
    服务端开发,全 Kotlin
    icris
    icris
    Sep 26, 2018
    16
    @GoodRainChen #8
    那么用 Java 对思考有什么样的好处,使用 kotlin 对思考有什么样的坏处呢?
    如果没有,简单的算数,kotlin 还是快
    whitepoppy
    whitepoppy
    OP
    Sep 26, 2018
    17
    @GoodRainChen 我同意 浪费时间 没以前写的顺手了 写起来太别扭了
    loshine1992
    loshine1992
    Sep 26, 2018❤️2
    18
    @whitepoppy #14

    骂别人 sb 的时候想想自己为什么不拥抱变化,为什么不愿意学习。

    拿着工资还可以学东西是多好的事情啊

    而且会 Java 的人学 Kotlin 真的成本超低,2~3 天就可以上手,1 周看完一些特性就可以无缝使用了
    icris
    icris
    Sep 26, 2018
    19
    推荐几行代码
    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 的时候就会难受了。
    whitepoppy
    whitepoppy
    OP
    Sep 26, 2018
    20
    @loshine1992 这话你怎么不和金融行业的说呢 公司项目要的是稳定 自己另说 不写也可以 但他封装的东西 比起 java 还难写 还不让改
    loshine1992
    loshine1992
    Sep 26, 2018
    21
    @whitepoppy #20

    不爽就写 Java 啊,又不是不能混编,能过 Code Review 就行。
    sampeng
    sampeng
    Sep 26, 2018❤️2
    22
    kotlin 是唯一一个改善让我觉得 java 系还能一战的语言。

    每个特性都是为了节省时间和吸收其他现代化语言设计的。。每个特性都爱不释手。。。

    用 kotlin 和用 java 的思维去写代码不知道哪里冲突了。。。。。。

    ps:lz 写的还蛮好的啊。。。
    whitepoppy
    whitepoppy
    OP
    Sep 26, 2018
    23
    @loshine1992 那倒是好了哦 关键不让啊 非要按他的要求写 天天还沾沾自喜 233
    storypanda
    storypanda
    Sep 26, 2018 via Android
    24
    让我想起了我当时选择 Swift 和 OC 的抉择,但 Android 自学我选择 Java
    GoodRainChen
    GoodRainChen
    Sep 26, 2018❤️1
    25
    @icris
    首先,我没打算否认 kotlin 的代码更加简洁,有他的先进性(当然,我个人用着其实也不算太舒服,先搁置这个问题)
    但是,这些便捷对于开发效率,正如我之前写的,提升没有想象中的显著。写过一段时间就会发现,kotlin 对于类型安全等方面的限制更加严格,把简化写法带来的优势抵消了不少。
    相反地,便捷的语法、简化的语法糖,势必带来代码阅读需要更多的思考,哪怕你觉得微不足道,但是积累起来也是影响效率的。毕竟你看代码思考要转个弯,没有 java 那么傻瓜(直白)。举个例子,B.setXXX(A) 简化成 B.XXX = A,代码上 set 改成了=,省不了两个字符,但是屏蔽了 setXXX 是个 method 的事实,也许别人就在这个 setXXX 里做了计算逻辑,你看代码的时候很容易不小心漏过去。这只是个例子,你可能有办法反驳我,但是我希望我的意思能传达到
    xd314697475
    xd314697475
    Sep 26, 2018
    26
    官方没支持时就在用了,比 java 爽吧
    loshine1992
    loshine1992
    Sep 26, 2018
    27
    @whitepoppy #23

    要么写,要么炒 boss 咯,你们两个三观不合无解的啦。

    PS:Kotlin 就是比 Java 好。
    whitepoppy
    whitepoppy
    OP
    Sep 26, 2018
    28
    @loshine1992 什么 boss 都是搬砖的
    whitepoppy
    whitepoppy
    OP
    Sep 26, 2018
    29
    @xd314697475 不爽 我感觉差别不大
    lucky2javascript
    lucky2javascript
    Sep 26, 2018
    30
    现在用 flutter 写
    xiaoshenke
    xiaoshenke
    Sep 26, 2018 via Android
    31
    不多 我就不用
    icris
    icris
    Sep 26, 2018
    32
    @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 可以不检查让它运行时空指针,那我是只看出来好处。

    但看起来楼主是来喷人的,在这讨论这些意义不大。
    GoodRainChen
    GoodRainChen
    Sep 26, 2018
    33
    @icris
    “如果看一个 x.a = 1 你不知道里面有没有计算逻辑,那么如何知道 x.setA(1); 里面有没有计算逻辑”。
    x.setA(1)更接近本质,而 x.a = 1 是封装了一层的简化版本。实际工作中不关心他人代码的内部逻辑是很难的,场景很多:比如新人入职、新接手模块,又或者做 review,又或者定位问题,尤其是小团队或者小组负责人,每个人都必须对项目整体了如指掌。屏蔽越多本质上的细节,意味着越容易让人的思维被误导

    第二点其实就是说到了这个 kotlin 麻烦的地方,目前 Android SDK 就是用 java 写的,kotlin 自己玩,对于空值的保护确实不错。但是带上 Java 写的 AndroidSDK,就有了不少的麻烦,两种语言之间的类型转换让事情变麻烦了

    再说下去有点类似争 XX 语言天下第一了。我也觉得意义不大。

    所以我再总结一下我的观点,kotlin 不坏,但是似乎没有好到顶着招聘和学习成本去强制引入它,尤其是如果其他同事不喜欢 kotlin,那更是带来内部矛盾,得不偿失
    mmdsun
    mmdsun
    Sep 26, 2018 via Android
    34
    没有本质变化。Java13 估计 var 携程 扩展函数 都会有了
    icris
    icris
    Sep 26, 2018
    35
    @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 生成的,甚至点进去看的时候都同样跳转到声明处。我没感觉出来区别。
    GoodRainChen
    GoodRainChen
    Sep 26, 2018
    36
    @icris

    就以 setContentView(view: View!)为例
    假设这个 setContentView 是我写的,我明确知道 view 逻辑上根本不可能为 null,但是在这里被转换成了 View!类型,是不能和 View 通用的,我得加一步转换,否则每处用到这个 view 的地方都要加"?"来处理。

    而在原本的 java 里,我这里不需要任何额外操作
    icris
    icris
    Sep 26, 2018
    37
    @GoodRainChen #36
    首先,你这个逻辑是错的。setContentView 是你写的,那是谁在调用 setContentView ?你自己调用你知道,团队成员调用你也知道?他们调用传个 null 进来,你是不是要崩?
    而此时如果你们用 kotlin,这个方法就可以是 setContentView(view: View) ,谁也不会传 null 进来。

    其次,这个方法不是你写的,它本来就可以给个 null,如果你重写方法并不处理 null,总有第三方库会让它出错。
    GoodRainChen
    GoodRainChen
    Sep 26, 2018
    38
    @icris
    由外部保证参数的合法性,否则直接崩溃反而比较好。就像有些方法判断参数合法性,不合法直接扔一个参数不合法的异常出来,直接崩了。这是很常见的一种模式。
    那我再换个,不是入参,是返回值,比如 xxx.toString() 从 Java 拿过来 String!,明明可以确认这玩意儿不可能为空,还是要判空,不是给人添麻烦吗?
    icris
    icris
    Sep 26, 2018
    39
    @GoodRainChen #36
    等等,你好像挖了个坑给我,标注 ! 的东西作为方法返回值类型时在 kotlin 里根本不需要判断非空也不需要加 ? 调用,作为参数重写的时候可以自己选择加不加可空,你说的不能和非空类型通用的是 savedInstanceState 这样的 Nullable 的 东西
    theworldsong
    theworldsong
    Sep 26, 2018
    40
    公司项目使用。全线在用。
    icris
    icris
    Sep 26, 2018
    41
    @GoodRainChen #38
    常见的模式是判断了再抛异常出去,直接报空指针可不常见(要说常见倒也常见,只是这种时候可算不上模式)。
    建议打开 IDE 写几行试试看,别靠猜。推荐测试方法 getMenuInflater(),kotlin 里的 menuInflater,类型 MenuInflater!,看看不加问号报不报警告。
    crist
    crist
    Sep 26, 2018
    42
    哈哈哈哈哈哈哈哈哈
    icris
    icris
    Sep 26, 2018❤️1
    43
    @GoodRainChen #38
    我也再复制一个正常的不接受空参数的方法的实现供参考
    @Override
    public ActionMode startSupportActionMode(@NonNull final ActionMode.Callback callback) {
    if (callback == null) {
    throw new IllegalArgumentException("ActionMode callback can not be null.");
    }
    ...
    }
    abeholder
    abeholder
    Sep 26, 2018
    44
    kotlin 挺好的啊,上半年的时候有几天下午在公司划水,就看了下官网的语法,然后把以前写的猜单词的小程序用 kotlin 实现了下。
    感觉用起来比 java 真的要舒服很多诶。。
    但是之后一直没用过,现在基本上 kotlin 的语法已经忘的差不多了。。
    然后这个程序我也已经看不懂了。。。

    https://github.com/abedormancy/ToyPrograms/blob/master/src/game/kotlin/GuessWord.kt

    ,有没 kotlin 大佬帮忙看下各种语法是否使用得当。。。0 0.
    abeholder
    abeholder
    Sep 26, 2018
    45
    @icris 大佬帮我瞅两眼 ,( ̄︶ ̄)↗
    kaedea
    kaedea
    Sep 26, 2018 via Android
    46
    协程都出稳定版了,为啥还不用...
    cgpiao
    cgpiao
    Sep 26, 2018 via iPhone❤️1
    47
    根本原因还是思维的懒惰,你用 kotlin 还在用死板的 java 思想,当然怎么写都不爽。何不培养 kotlin 的思想呢,我觉得现代语言肯定比旧的语言好的,因为没有陈旧的历史包袱,不用做那些痛苦的妥协。
    grantonzhuang
    grantonzhuang
    Sep 26, 2018 via Android
    48
    kt 好用的地方除了空值判断这个,各种默认 final 也挺好的。主要不在于技巧和写法,而在于思想。
    grantonzhuang
    grantonzhuang
    Sep 26, 2018 via Android
    49
    如果只是简单的把 Java 的逻辑翻译成 kt,那确实没啥必要去换
    icris
    icris
    Sep 26, 2018❤️1
    50
    @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] },这些方法都是只要看见有这个方法就知道怎么用的,我觉得没必要特别记忆,写个点想要什么就打什么,有方法就用,没方法的经常用的话也可以造个方法用,写得跟写英语一样就行了。
    abeholder
    abeholder
    Sep 26, 2018
    51
    @icris 谢谢大佬,给大佬捶背。╭(′_`)╭(′▽`)╯
    bumz
    bumz
    Sep 26, 2018
    52
    Kotlin 是 IDE 公司设计的,Java 是程序语言领域的大师级人物设计的,于是你发现所有那些擅长 marketing 的叫嚣着替代 Java 的语言,其实最终都不如 Java
    whitepoppy
    whitepoppy
    OP
    Sep 26, 2018
    53
    @icris 思维方式不是怎么好改的啊 有方便的地方也有不好的地方 还是觉得那个顺手就用那个
    icris
    icris
    Sep 27, 2018
    54
    @bumz #52
    这个于是起什么作用?为什么不如,哪不如?大师级人物干什么都是大师级,大师级人物的 NetBeans 怎么没人用呢?
    huclengyue
    huclengyue
    Sep 27, 2018 via Android
    55
    kotlin 加 anko 真香
    bumz
    bumz
    Sep 27, 2018
    56
    @icris #54 阅读偏正短语的时候要注意定语。

    「程序语言领域的大师级人物」、「 IDE 公司」都是偏正短语。

    「于是」后面的是按照现有的信息对未来的期望,这点从「最终」一词的使用就可以看出了。

    既然是期望,「哪里」、「为什么」就是次要的问题。这就好比「百度出品」和「 Google 出品」的差别一样。
    icris
    icris
    Sep 27, 2018
    57
    @bumz #56
    那原因不问,展望一下擅长 marketing 的叫嚣着替代 Java 的 C# 未来将会如何吧,毕竟是微软做的。
    dagger2
    dagger2
    Sep 27, 2018
    58
    我用 kotlin 就一个原因,kotlin 写出来的代码更漂亮,能让我开心。。。
    fan123199
    fan123199
    Sep 27, 2018
    59
    Kotlin 太好用了, 就用 function extension 和 入表达式,就够了。写起来飞快,简直是封装中的封装。然后一些 list,map 等的操作语法糖,让人爱不释手。

    但是, 在我用了一段时间后还是发现一些问题。1,团队合作的问题。太简化,就需要理解。这个要看风格大家能不能互相接受。如果风格一致,那么大家都开心。2 , 搜索定位。 比如以前搜 setText,我可以知道哪里进行了文字设置。但现在不行了,全是等号。

    Android 上很多调用时频繁且繁琐的,能简化一点代码就简化一些。每次写 java 版的 dialog 就感觉在浪费生命。

    最后。Kotlin 大法好。
    ayayui
    ayayui
    Sep 27, 2018
    60
    能用 Kotlin 的时候我都不想用 Java
    davy1995
    davy1995
    Sep 27, 2018 via Android
    61
    这个时候还有吐槽没 get 到 kotlin 的好处的吧,就好比吃水果吃了水果皮没吃到果肉吧
    wupher
    wupher
    Sep 27, 2018
    62
    服务端自己负责的一个项目,目前是全 kotlin。
    Android 只有私人项目了。

    写习惯 kotlin 和 Groovy 后,我自己是非常讨厌写 Java 了。不过,kotlin 对型别有时要求过于严格,有时也挺麻烦的。
    notreami
    notreami
    Sep 27, 2018
    63
    你们用吧,反正最后还是需要深入了解 java
    chocotan
    chocotan
    Sep 27, 2018
    64
    多不多,看别人的统计结果吧
    https://www.oschina.net/news/97762/the-state-of-kotlin-2018
    -----
    前两天看到我们公司一个安卓项目已经在用 kotlin 写了
    closedevice
    closedevice
    Sep 27, 2018
    65
    以为大家都在谈语言的本质,而非语法,但看下来全程是谈语法的...
    icris
    icris
    Sep 27, 2018
    66
    @closedevice #65
    本质还是 JVM 语言,编译出来 .class 再反编译回去还是 Java,不谈语法有什么好谈的
    icop
    icop
    Sep 27, 2018
    67
    最主要的是看公司整体用什么。
    thinkloki
    thinkloki
    Sep 27, 2018
    68
    @qiyuey 老哥 kotlin 写服务端有什么教程吗?
    closedevice
    closedevice
    Sep 27, 2018
    69
    @icris 这一个本质背后蕴藏的体系非常庞大,只谈语法却是小了格局.
    zhangwugui
    zhangwugui
    Sep 27, 2018
    70
    感觉是思维的一个转换。
    xuhaoyangx
    xuhaoyangx
    Sep 27, 2018
    71
    本质来说 kotlin 其实还是一对语法糖,但是真香
    GoodRainChen
    GoodRainChen
    Sep 27, 2018
    72
    @icris
    主逻辑上的东西没必要判空,就比如 setContentView,判个空有意义吗?实际写代码都很赶时间的,这种阻塞核心流程的地方,还判空写 @NonNull,不是浪费时间吗?就算判了 null 也是个白屏死在那里,很多用户都没有杀应用这个概念,他只会觉得你有一个不可恢复 BUG
    bumz
    bumz
    Sep 27, 2018
    73
    @icris #57 可惜了,IDE 公司里没一个像 James Gosling 这样的程序语言设计专家,从 C# 的设计看微软里面也没有

    于是呢?今天 C# 几乎就是外包公司用
    icris
    icris
    Sep 27, 2018
    74
    @GoodRainChen #72
    你还在说 setContentView,这个方法根本没有标 NonNull,打开 IDE 看看这种 View! 的东西怎么处理的吧,别老给我挖坑了。
    我反正已经复制了一个 Google 写的判断参数是 null 就抛异常的 startSupportActionMode 方法出来,你可以认为这完全是浪费时间,就算不写也是一个 NullPointerException,我只能说这是正常逻辑该有的操作。

    还有,不是「没发现有什么本质上的优势,写代码最花时间的还是思考,而不是打字」吗,怎么连个 if (x == null) 都没时间写了?既然确实要这点儿时间,那 kotlin 优势不就又出来了?
    icris
    icris
    Sep 27, 2018
    75
    @bumz #73
    第一,外包公司也用 Java (同时外包公司不用 kotlin )。
    第二,你前一句说要展望未来来着,看今天市占有什么用,.net 开源才刚开始。
    第三,我试着理解一下你的逻辑:为什么 Java 好,因为它是「程序语言设计专家」开发的,为什么「程序语言设计专家」是「程序语言设计专家」,因为他开发了 Java ;为什么说微软没有「程序语言设计专家」,因为 C# 不好,为什么 C# 不好,因为它不是「程序语言设计专家」开发的。是这样吗?
    GoodRainChen
    GoodRainChen
    Sep 27, 2018
    76
    @icris
    唉,我打个比方,你非得揪着这个真实的方法不放,难道要我顶着安全红线把公司业务代码拿出来讨论吗?

    我们纠结这个问题的原点是: [kotlin 对于类型安全等方面的限制更加严格,把简化写法带来的优势抵消了不少]
    你说你代码简洁,省点时间,结果全在别的地方把省的时间又找回来了,这没多大优势啊
    iFlicker
    iFlicker
    Sep 27, 2018
    77
    @bumz unity3d。。。。
    auhah
    auhah
    Sep 27, 2018
    78
    挺香的。。。写起来蛮爽

    视野之内全是干货的感觉,冗余代码少了很多
    icris
    icris
    Sep 27, 2018❤️1
    79
    @GoodRainChen #76
    我再说一遍,你说的关于 kotlin 的 ! ? 限制,全是错的。我已经说了实际上 kotlin 是怎么处理 Java 方法定义的,你不愿意听不愿意看不愿意试,也行,至少结论应该是「 kotlin 对于类型安全等方面的限制更加严格,可以节省更多写 if (x == null) 的时间」。
    zzzmode
    zzzmode
    Sep 27, 2018
    80
    用 kotlin 可以少写很多代码
    xayoung
    xayoung
    Sep 27, 2018
    81
    iOS 来问下,kotlin 会有 swift 那样重新学几遍的困境么? (几个项目经历了 2.1->2.2->3.0->4.1->4.2,打开 Xcode 面对成千上万个错误就想死)
    GoodRainChen
    GoodRainChen
    Sep 27, 2018
    82
    @icris
    还是你自己去试试吧,或者是因为后面插件又跟新了?
    反正我这里直接 onCreate 里面直接用 savedInstanceState.getString("")
    是会提示错误的:Only safe(?.)or non-null .....
    bumz
    bumz
    Sep 27, 2018
    83
    @icris #75

    1. 凶手也用菜刀,但是菜刀不止凶手用,大厨也用。暗器只有凶手用。
    2. C# 已经快二十年了,在今天二十年的时间意味着什么已经不用多说了。
    3. 专家设计的语言不见得好,好的语言也不见得是专家设计的。但是绝大多数专家设计的语言比绝大多数业余人士设计的语言好,绝大多数优秀的语言是专家设计的。前者是二者的因果关系,后者是相关性,请勿混为一谈。
    icris
    icris
    Sep 27, 2018
    84
    @GoodRainChen #82
    savedInstanceState: Bundle?
    view: View!
    挑一个说到底,别跳着来。推荐测试语句 menuInflater.inflate(0, null),menuInflater 是 MenuInflater!
    那么这样一个 Bundle? 的对象,我前几楼也说了,我复制一下:
    「 Java 里的 onCreate 里面可以直接用 savedInstanceState 而不需要判断非空等第一次打开 Activity 报空指针。我觉得这个能力真是毫无用处。」
    在 kotlin 里不能方便地报空指针对工作有什么不好的影响吗?
    icris
    icris
    Sep 27, 2018
    85
    @bumz #83
    那么我要提一个问题了,为什么 Java 比 C# 好?
    bumz
    bumz
    Sep 27, 2018
    86
    @icris #85 这就是另一个帖子了

    简单来说 C# is sort of Java with reliability, productivity and security deleted.

    例如 C# 没有 Checked exception (一个很多人恨的特性,但其实他们只是恨写出可靠的程序罢了)

    再比如 C# 混乱的 IDisposable
    icris
    icris
    Sep 27, 2018
    87
    @bumz #86
    我实际上还可以继续提问,为什么 C# 没有 reliability 而 Java 有 reliability,为什么 C# 没有 productivity 而 Java 有 productivity,为什么 C# 没有 security 而 Java 有 security,但是算了,if you say so.
    zt1991616
    zt1991616
    Sep 27, 2018❤️1
    88
    Android 圈也和前端圈一样了?有啥好吵的,爱用用,不爱用别用,又没人强迫你
    TheWalkingDead
    TheWalkingDead
    Sep 27, 2018
    89
    用什么语言总体还是看公司需要,看 leader 安排,不过用小众语言的人总是自带优越感
    Tyanboot
    Tyanboot
    Sep 28, 2018 via Android
    90
    @xayoung 不会。只有实验性的功能才可能会被改掉,比如协程的支持。其他的用了这么久了还没有过破坏性改动。
    icris
    icris
    Sep 28, 2018
    91
    @TheWalkingDead #89
    事实表明 Java 程序员才有优越感,上面不用 kotlin 的很多表示看不起 kotlin (「你们用吧,反正最后还是需要深入了解 java 」(试图表达一个 kotlin 程序员都不懂 Java 的意思)、「 Kotlin 是 IDE 公司设计的」( Java 大于一切,语法吊打 C#)、楼主所有发言)。
    或者你是要表达 Java 在 Android 开发上算小众?毕竟现在 Google 的文档示例代码都把 kotlin 放前面,你这么说也没问题。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1417 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 105ms · UTC 22:01 · PVG 06:01 · LAX 14:01 · JFK 17:01
    ♥ Do have faith in what you're doing.