Wan Android 项目总结

项目的由来

这个项目也算是自己学习了一段时间的Android以后的一个总结和学习吧,项目采用了Kotlin语言,Api采用的hongyang大神的WanAndroid 网站的API,就在昨天晚上这个APP的1.0 版本完成了,今天就来总结一下这个项目吧。

项目地址

Github WanAndroid

关于Kotlin的思考

Kotlin并不仅仅是语法糖,她很好,但在我看来她也不完美无缺的。

Kotlin改良了

Java对于嵌套类和内部类的定义的别扭之处,因为我并不是一个纯粹的Java开发者,所以在我接触Java的 嵌套类内部类 的时候,尤其是 static 关键字用于定义嵌套类的时候是在是让我恶心的不轻,至今我还不太理解这个蜜汁操作。

Kotlin中并没有受检查异常,这一点着实是让代码看起来利索了不少,我们不必再一次又一次的去try-catch 。

更简单的IO,Kotlin对Java中的IO框架进行了进一步的封装,简化了一些机械性的工作,Java的IO用过的都知道。。。。这也是我至今接受不了的一个地方(Java那驳杂的IO体系)。

扩展方法和Lambda表达式的支持,这些简便的操作,让我的编码体验更加丝滑。

内联函数,了解过Java泛型擦除的应该都知道,Java的泛型是又一个令人诟病的地方。在Kotlin中通过内联函数的方式缓解了一下这个显现。

...

Kotlin让我很不爽

说了Kotlin不好的地方了,这次就来吐槽一波吧

Kotlin中并没有 静态 这个概念,而是采用伴生对象的机制来实现的类似静态的操作,这让我很是无所适从,我的代码编程了下面这样。

companion object {
fun show(context: Context) {
val intent = Intent(context, MainActivity::class.java)
context.startActivity(intent)
}
}

伴生对象的机制,不仅仅是让代码多了一层前端套,更为致命的是,我甚至都不知道将它放置在类中的哪个位置。这个体验让我很是不爽啊。

Kotlin中的变量的声明,从单纯的变量变为了 valvar 的声明的方式,而 val 声明的变量,就类似Java中的 final 关键在修饰的变量类似,这让我很是费解。或是是为了更好的性能?这就不得而知了。

Kotlin中没有字段,Kotlin中虽然并非是真的没有字段,但是我们却无法显式的声明它,所以当我们需要一些字段的时候,我们不得不声明一个 private 的属性。

...

Kotlin自从被作为Android的第一开发语言来被 Google 扶持了以后,她就一直饱受争议,在我看来她并不是完美的,甚至有很多对人不太友好的地方,但是她绝对不是一些语法糖而已。她也确实是提高了我们的开发效率。

轮子加轮子

这是一个轮子+轮子的作品,项目中用到了大量的轮子来提高开发效率或是美化项目,这些轮子都非常受欢迎,使用非常简单,在用这些轮子的时候,我感到有些沮丧,我的项目中导出都是这些轮子的影子,而这就显得我自己的东西就很少了。 还是得老老实实的编码争取自己也可以写出来好的轮子。

无法驾驭的项目结构与无法保证的代码质量

在学习MVP架构的时候,看上去非常的简单和容易上手,但是自己真正去用的时候就感觉难以驾驭经常性的偏离轨道,所以不得不一次又一次的对整体的架构动一些大手术。

在写代码的时候,我总是很难控制代码的质量,出现了命名规范不统一,类的继承结构有问题的情况,在写代码的时候总是集中注意力于功能上,但是这就导致了很多冗余的垃圾代码,甚至这些代码到现在还存在于项目中。

UI设计

在做这个APP的时候,UI的设计让我绞尽脑汁并且也占据了大量的时间,但是最后也没得到一个比较漂亮的UI,哎,关于UI设计真是一言难尽,纯属是赶鸭子上架的举措了。

写在最后

好了知耻而后勇,代码总是一步一步优化的,我将会一点点的优化这些瑕疵,使其成为一个比较完美的作品,好了,本文到此为止,与诸君共勉。

Wan Android 项目总结的更多相关文章

  1. Android项目刮刮奖详解(三)

    Android项目刮刮奖详解(二) 前言 上一期我们已经实现了一个简易的刮刮卡功能,这一期我们来将其完善一下 目标 将刮刮奖的宽高改为合适高度 将刮刮奖位置居中 将信息层的图片换成文字(重点) 实现 ...

  2. Android——eclipse下运行android项目报错 Conversion to Dalvik format failed with error 1解决

    在eclipse中导入android项目,项目正常没有任何错误,但是运行时候会报错,(clean什么的都没用了.....)如图: 百度大神大多说是jdk的问题,解决: 右键项目-Properties如 ...

  3. eclipse — 导入android项目后识别成java项目的问题及解决

    最近在eclipse导入android项目的时候遇到了奇葩问题,再此记录 遇到的问题就是:将完好的android项目导入到eclipse的时候,原本这是一个很容易的事情,但是导入成功后发现,,,靠ec ...

  4. 用Kotlin创建第一个Android项目(KAD 01)

    原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...

  5. Android之什么是Activity和常用的ADB命令以及Android项目结构的认识

    总结一下之前学习Android的一些内容 一:  Android常用的ADB命令(adb android调试桥)      1.adb devices   查看模拟器设备并重新连接. 2.adb ki ...

  6. eclipse将android项目生成apk并且给apk签名

    转载:http://www.cnblogs.com/tianguook/archive/2012/09/27/2705724.html 生成apk最懒惰的方法是:只要你运行过android项目,到工作 ...

  7. Android开发学习——Android项目的目录结构

    Android项目的目录结构: 资源文件夹: 清单配置文件: Android的四大组件在使用前全部需要在清单文件中配置 <?xml version="1.0" encodin ...

  8. Android项目实战(二十五):Android studio 混淆+打包+验证是否成功

    前言: 单挑Android项目,最近即时通讯用到环信,集成sdk的时候 官方有一句 在 ProGuard 文件中加入以下 keep. -keep class com.hyphenate.** {*;} ...

  9. Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中

    前言: 关于.jar文件: 平时我们Android项目开发中经常会用到第三方的.jar文件. 其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(r ...

随机推荐

  1. LoadRunner学习笔记

    什么是性能测试: 简单说,功能测试是软件是否能用,性能测试是看软件好不好用: 性能测试的含义,大体来讲就是通过自动化的手段,模拟生产运行的业务压力或者相应的场景,来测试协同系统是否满足生产需要. 性能 ...

  2. Android 基础 一 AndroidManifest.xml

    一.概述 AndroidManifest.xml是Android应用的入口文件,它描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的 ...

  3. Python1 简介及安装、基础

    Python介绍 Python是面向对象,高级语言,解释,动态和多用途编程语言.Python易于学习,而且功能强大,功能多样的脚本语言使其对应用程序开发具有吸引力. Python的语法和动态类型具有其 ...

  4. LeetCode(91):解码方法

    Medium! 题目描述: 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计 ...

  5. codeforce 240E 最小树形图+路径记录更新

    最小树形图的路径是在不断建立新图的过程中更新的,因此需要开一个结构体cancle记录那些被更新的边,保存可能会被取消的边和边在旧图中的id 在朱刘算法最后添加了一个从后往前遍历新建边的循环,这可以理解 ...

  6. jenkins持续集成:定时构建语法

    构建位置:选择或创建工程_设置_构建触发器 1. 定时构建语法:* * * * * (五颗星,多个时间点,中间用逗号隔开)第一个*表示分钟,取值0~59第二个*表示小时,取值0~23第三个*表示一个月 ...

  7. Centos7上配置网络和本地yum方法

    配置网络yum源 前提:1.这个系统能上网 2.vim /etc/resolv.conf nameserver 8.8.8.8 nameserver 114.114.114.114 操作如下: 1.m ...

  8. 20165206 2017-2018-2《Java程序设计》课程总结

    20165206 2017-2018-2<Java程序设计>课程总结 一.每周作业链接汇总 预备作业1:对师生关系的看法和期望 预备作业2:c语言基础和学习技能的理解 预备作业3:Linu ...

  9. 社会单位消防安全户籍化管理系统——半自动提交V1.0版本

    社会单位消防安全户籍化管理系统——半自动提交V1.0版本 首先先上代码,开发这个小程序其实是用来帮助同事完成一项每天都做的繁琐事件,以往需要花费十分钟做这件事情,现在就是傻瓜式,点几下鼠标就好了.本来 ...

  10. 正则表达式匹配URL或者网址

    正则表达式 (http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])? ...