首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Android

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

  •  
  •   whitepoppy · 147 天前 · 5457 次点击
    这是一个创建于 147 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 回复  |  直到 2018-09-28 23:32:17 +08:00
        1
    lwbjing   147 天前
    他们都跟我说未来会多。。
        2
    luopengfei14   147 天前 via iPhone
    楼主思想上被草多了,就习惯了
        3
    firefffffffffly   147 天前
    感觉写得还可以啊,习惯两天就真香了,不过我们屏蔽了不经过 findViewById 直接操作 view 的写法

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

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

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

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

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

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

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

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

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

    PS:Kotlin 就是比 Java 好。
        28
    whitepoppy   147 天前
    @loshine1992 什么 boss 都是搬砖的
        29
    whitepoppy   147 天前
    @xd314697475 不爽 我感觉差别不大
        30
    lucky2javascript   147 天前
    现在用 flutter 写
        31
    xiaoshenke   147 天前 via Android
    不多 我就不用
        32
    icris   147 天前
    @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   147 天前
    @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   147 天前 via Android
    没有本质变化。Java13 估计 var 携程 扩展函数 都会有了
        35
    icris   147 天前
    @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   147 天前
    @icris

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    再比如 C# 混乱的 IDisposable
        87
    icris   146 天前
    @bumz #86
    我实际上还可以继续提问,为什么 C# 没有 reliability 而 Java 有 reliability,为什么 C# 没有 productivity 而 Java 有 productivity,为什么 C# 没有 security 而 Java 有 security,但是算了,if you say so.
        88
    zt1991616   146 天前   ♥ 1
    Android 圈也和前端圈一样了?有啥好吵的,爱用用,不爱用别用,又没人强迫你
        89
    TheWalkingDead   146 天前
    用什么语言总体还是看公司需要,看 leader 安排,不过用小众语言的人总是自带优越感
        90
    Tyanboot   145 天前 via Android
    @xayoung 不会。只有实验性的功能才可能会被改掉,比如协程的支持。其他的用了这么久了还没有过破坏性改动。
        91
    icris   144 天前
    @TheWalkingDead #89
    事实表明 Java 程序员才有优越感,上面不用 kotlin 的很多表示看不起 kotlin (「你们用吧,反正最后还是需要深入了解 java 」(试图表达一个 kotlin 程序员都不懂 Java 的意思)、「 Kotlin 是 IDE 公司设计的」( Java 大于一切,语法吊打 C#)、楼主所有发言)。
    或者你是要表达 Java 在 Android 开发上算小众?毕竟现在 Google 的文档示例代码都把 kotlin 放前面,你这么说也没问题。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2354 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 15:08 · PVG 23:08 · LAX 07:08 · JFK 10:08
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1