Wan Android 项目总结
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中的变量的声明,从单纯的变量变为了 val
和 var
的声明的方式,而 val 声明的变量,就类似Java中的 final
关键在修饰的变量类似,这让我很是费解。或是是为了更好的性能?这就不得而知了。
Kotlin中没有字段,Kotlin中虽然并非是真的没有字段,但是我们却无法显式的声明它,所以当我们需要一些字段的时候,我们不得不声明一个 private
的属性。
...
Kotlin自从被作为Android的第一开发语言来被 Google 扶持了以后,她就一直饱受争议,在我看来她并不是完美的,甚至有很多对人不太友好的地方,但是她绝对不是一些语法糖而已。她也确实是提高了我们的开发效率。
轮子加轮子
这是一个轮子+轮子的作品,项目中用到了大量的轮子来提高开发效率或是美化项目,这些轮子都非常受欢迎,使用非常简单,在用这些轮子的时候,我感到有些沮丧,我的项目中导出都是这些轮子的影子,而这就显得我自己的东西就很少了。 还是得老老实实的编码争取自己也可以写出来好的轮子。
无法驾驭的项目结构与无法保证的代码质量
在学习MVP架构的时候,看上去非常的简单和容易上手,但是自己真正去用的时候就感觉难以驾驭经常性的偏离轨道,所以不得不一次又一次的对整体的架构动一些大手术。
在写代码的时候,我总是很难控制代码的质量,出现了命名规范不统一,类的继承结构有问题的情况,在写代码的时候总是集中注意力于功能上,但是这就导致了很多冗余的垃圾代码,甚至这些代码到现在还存在于项目中。
UI设计
在做这个APP的时候,UI的设计让我绞尽脑汁并且也占据了大量的时间,但是最后也没得到一个比较漂亮的UI,哎,关于UI设计真是一言难尽,纯属是赶鸭子上架的举措了。
写在最后
好了知耻而后勇,代码总是一步一步优化的,我将会一点点的优化这些瑕疵,使其成为一个比较完美的作品,好了,本文到此为止,与诸君共勉。
Wan Android 项目总结的更多相关文章
- Android项目刮刮奖详解(三)
Android项目刮刮奖详解(二) 前言 上一期我们已经实现了一个简易的刮刮卡功能,这一期我们来将其完善一下 目标 将刮刮奖的宽高改为合适高度 将刮刮奖位置居中 将信息层的图片换成文字(重点) 实现 ...
- Android——eclipse下运行android项目报错 Conversion to Dalvik format failed with error 1解决
在eclipse中导入android项目,项目正常没有任何错误,但是运行时候会报错,(clean什么的都没用了.....)如图: 百度大神大多说是jdk的问题,解决: 右键项目-Properties如 ...
- eclipse — 导入android项目后识别成java项目的问题及解决
最近在eclipse导入android项目的时候遇到了奇葩问题,再此记录 遇到的问题就是:将完好的android项目导入到eclipse的时候,原本这是一个很容易的事情,但是导入成功后发现,,,靠ec ...
- 用Kotlin创建第一个Android项目(KAD 01)
原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...
- Android之什么是Activity和常用的ADB命令以及Android项目结构的认识
总结一下之前学习Android的一些内容 一: Android常用的ADB命令(adb android调试桥) 1.adb devices 查看模拟器设备并重新连接. 2.adb ki ...
- eclipse将android项目生成apk并且给apk签名
转载:http://www.cnblogs.com/tianguook/archive/2012/09/27/2705724.html 生成apk最懒惰的方法是:只要你运行过android项目,到工作 ...
- Android开发学习——Android项目的目录结构
Android项目的目录结构: 资源文件夹: 清单配置文件: Android的四大组件在使用前全部需要在清单文件中配置 <?xml version="1.0" encodin ...
- Android项目实战(二十五):Android studio 混淆+打包+验证是否成功
前言: 单挑Android项目,最近即时通讯用到环信,集成sdk的时候 官方有一句 在 ProGuard 文件中加入以下 keep. -keep class com.hyphenate.** {*;} ...
- Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中
前言: 关于.jar文件: 平时我们Android项目开发中经常会用到第三方的.jar文件. 其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(r ...
随机推荐
- 《剑指offer》重建二叉树
本题来自<剑指offer> 重构二叉树 题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2 ...
- cf1132G 线段树解分区间LIS(一种全新的线段树解LIS思路)+单调栈
/* 给定n个数的数列,要求枚举长为k的区间,求出每个区间的最长上升子序列长度 首先考虑给定n个数的数列的LIS求法:从左往右枚举第i点作为最大点的贡献, 那么往左找到第一个比a[i]大的数,设这个数 ...
- Python中的xxx == xx是否等价于xxx is xxx
先上代码: >>> a = 1 >>> b = 1 >>> a is b True >>> a == b True what? ...
- 如何用TortoiseSVN对文件进行操作
我们如何用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突等. 添加文件 在检出的工作副本中添加一个Readme.txt文本文件,这时候这个文本文件会显示为没有版本控制的状态,如图 ...
- Vue-cli添加全局js
1.填写全局config.js function getConfig(str){ var ajaxurl = "http://112.80.39.92:8008/webservices/re ...
- 饮冰三年-人工智能-linux-08 软件包管理(Python的安装)
1:软件包存放的位置 media/CentOS_6.9_Final/Packages文件夹下 2.RPM就是Red Hat Package Manger(红帽软件包管理工具)的缩写. 2.1 常用的命 ...
- 蓝桥杯第十届真题B组(2019年)
2019年第十届蓝桥杯大赛软件类省赛C/C++大学B组# 试题 A:组队# 本题总分:5分[问题描述]作为篮球队教练,你需要从以下名单中选出 1号位至 5号位各一名球员,组成球队的首发阵容.每位球员担 ...
- 常见的爬虫分析库(4)-爬虫之PyQuery
PyQuery 是 Python 仿照 jQuery 的严格实现.语法与 jQuery 几乎完全相同. 官方文档:http://pyquery.readthedocs.io/ 安装 1 pip ins ...
- Nancy 返回值详解
简介 Nancy 是一个轻量级的,简单粗暴的framework用来构建基于HTTP的各种服务,兼容.Net和Mono.它的返回值也是多种多样的,适应各种不同的情况.包括Response.AsFile( ...
- Multidex(二)之Dex预加载优化
Multidex(二)之Dex预加载优化 https://www.jianshu.com/p/2891599511ff