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. 解决linux下svn update 产生Node remains in conflict的问题

    提交一个文件 服务器上死活更新不了 是因为有冲突,解决办法:svn revert --depth=infinity /var/SvnProject/APITest 再次执行更新 进有改动的文件夹,更新 ...

  2. WebStorm中常用的快捷键及使用技巧

    ------------------------------------- 近期整理了如下个人觉得比较常用的快捷键,也请前辈给予补充.多多指教. --------------------------- ...

  3. 一个小时就能理解Java的NIO必须掌握这三大要素!

    同步与阻塞 同步和异步是针对应用程序和内核的交互而言的. 同步:执行一个操作之后,进程触发IO操作并等待(阻塞)或者轮询的去查看IO的操作(非阻塞)是否完成,等待结果,然后才继续执行后续的操作. 异步 ...

  4. python中range()函数的用法

    python中range()函数可创建一个整数列表,一般用在for循环中. range()函数语法: range(start,stop[,step]) 参数说明: star: 计数从star开始.默认 ...

  5. fastJson常用方法总结

    1.了解json json就是一串字符串 只不过元素会使用特定的符号标注. {} 双括号表示对象 [] 中括号表示数组 "" 双引号内是属性或值 : 冒号表示后者是前者的值(这个值 ...

  6. js 浮点数相加 变成字符串 解决方案

    var count = 0; count+=Number(parseFloat(value[i]['sla']).toFixed(2)); 数字相加的时候最好使用Number转换一下

  7. 20165206 2017-2018-2 《Java程序设计》第二周学习总结

    20165205 2017-2018-2 <Java程序设计>第一周学习总结 教材学习内容总结 java语言共有8种基本数据类型,分别是boolean.byte.short.char.in ...

  8. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  9. 一脸懵逼学习HBase的搭建(注意HBase的版本)

    1:Hdfs分布式文件系统存的文件,文件存储. 2:Hbase是存储的数据,海量数据存储,作用是缓存的数据,将缓存的数据满后写入到Hdfs中. 3:hbase集群中的角色: ().一个或者多个主节点, ...

  10. [转] getBoundingClientRect判断元素是否可见

    getBoundingClientRect介绍 getBoundingClientRect获取元素位置 getBoundingClientRect用于获得页面中某个元素的左,上,右和下分别相对浏览器视 ...