答CsdnBlogger问-关于安卓入行和开发问题
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!
问1:请问大牛对功能和框架的认识有哪些?(提问者:执笔记忆的空白)
比如对于一个小公司来说,什么样的框架最适用,您经历过的小、中、大公司对于框架是如何处理的?自己封装框架?还是什么选择市面上流行的框架? 另外,对于一个团队,您觉得什么最重要?对于一个leader,怎样管理好自己的team。
答1:
你好,大牛这个称呼,一直都是给予别人的,我在坚持的事就是把复杂的东西,简单化的介绍给大家。
对于框架来说,刚开始在小公司的时候,没在于过框架,大部分逻辑写在Activity里,然后加上model和自定义view就完成一个项目;跳到中型公司的时候,也是原始期,项目刚开始,只是加入了controller,封装db管理器和逻辑管理器等;而到大型公司的时候,可谓真的是使用框架,从两位大牛身上学到比较多的东西,详见支付宝黎三平《支付宝钱包客户端技术架构》和天猫嗷啸《漫谈天猫架构设计》,网上应用都能搜到分别介绍支付宝项目依赖开发和各种层次的设计,到目前所在公司经过两年多积累形成一套自己独特的架构体系。
自己做架构,主要以公司的业务结构为基础搭建,遵循MVC或MVP或MVVP等模块,使用设计模式对整体进行一个定义,让后续的同学理解你的用意,一方面有利于项目快速开发,另一方面也有利于项目的稳定,同时可以分拆其中的一些模块进行细化和再造;当然在满足自己公司的业务要求时,可以寻求一些更好的体验或者优化方案,而项目最重要的莫过于网络框架和图片加载框架,而数据埋点也很重要,只是目前没发现什么样去做这块的框架;
现在常用的架构层级是:View层、activity层、model层、fragment层、service层、core层、依赖层、数据解析层、数据请求层、加载过程层、适配器层、工具层等,还有一些独立的功能和模块,以及分享和相似功能继承和抽象等。
作为项目负责人,或者叫架构师,你需要理解每套框架背后的设计原理,比较其优劣性和稳定性,做出合理的选择;以免选择后没源码不方便维护,或者框架本身还有明显bug未解决;是否满足项目的业务如加载中,如缓存在sd卡和内存等一些feature;这些都是要考虑的核心内容,最终改造成你自己的东西,像大公司一般不会轻易用别人的框架,可能存在漏洞泄漏自己的数据等等,但小公司也不担心那些,还不足够大到让人重视,暂时可以把性能和效率放在第一位,重视用户体验。
而对于一个团队,自身的管理能力,技术水平,都是限制团队发展和项目完成情况的硬性条件,比如平常项目期个人采用的日清法,可以有效推动进度;跟产品经理沟通一些需求实现方式,跟后端和UI沟通一些接口和设计问题;设计并维护架构,方便小组成员的开发工作,并在必要时给予提醒和帮助;做代码Review,保证代码质量,制定相应的项目要求和代码要求等;对团队进行定期培训和项目总结,争取福利也蛮重要的;对于某方面比较厉害的同事,可以将项目中一些模块或问题交给他,帮助他成长和满足其价值实现,尽量使用前沿技术和开发工具,使团队走在时代前列,自身也会有优越感;带团队呢,最主要的是:给大家提供良好的团队氛围,使每个人都能得到成长和价值实现,帮助大家争取好的机会和福利,以及做好面试把握好什么样的人可以加入团队-价值观、合作态度、学习能力、目标性等等吧。
问2:关于个人开发app有什么指导建议(提问者:承宇mom程序媛)因为我们知道开发一款app,需要设计到很多方面,前端UI,后端服务,还有Android app开发。我想请问下大师有什么建议吗?
比如UI设计,有什么好的工具,好的app设计网站或者搜素材的地方推荐?
比如后端服务,有什么好的框架可以使用?
或者说我有一个很好的思路,怎么能一个人做下来一个能用的,好用的app?
希望大师能指点迷津,因为我相信只有实践才能学得更快,而且是有成果才能有成就感激励自己。谢谢!!
答2:
你好,首先呢,不知道你有没有开发过app,显然你说的那么多知识,感觉你的出发点是所有东西都自己做,这样工作量好大,不如将一些事情外包,比如产品设计、UI设计,后端也让搭一套简单接口出来,应该不到5000块吧。
其次一件事情要做精,个人经验至少要5年吧,至少编程如此,UI设计也是全新的一门技术,后端嘛可以3年学好;
UI设计,个人没有设计过,一般有原画师画,或者用PS,公司同事都是用PS做图的,个人以前在学校学过简单的,但UI设计确实没做过;
个人觉得第一、用系统提供的图片吧,framework层提供大多数软件所需要的图片,前进后退、删除等等;第二、自定义shape;第三、可以在网站上找素材比如:http://blog.csdn.net/reboot123/article/details/8611382这篇博文有一些介绍;第四、图片压缩,使用webphttp://blog.csdn.net/reboot123/article/details/46552437,和tinypng.com
关于后端服务,大学时学的SSH,感觉好麻烦,但后端同事说团队合作嘛,还是要用这个,另外可以加上JBoss,可能协作性比较强;如果个人开发, 比较建议使用JFinal,个人也在学习中,希望学会好,做个个人网站,有兴趣也可以一起学习交流经验。
至于App开发,有一些经验之谈,比如:http://blog.csdn.net/liuxian13183/article/category/1157874可以参考个人博客项目管理系列的文章,如果有兴趣还可以再看看项目架构和设计模式,对产品和android系统有个通体的了解,开发会比较快速哦。
最后再给个建议,个人做app嘛,可以做个不需要后端的,简单一点的,比如照相机,比如播放器,本地素材+开源库就足够了。没事多FQ,看看github上的项目,都写的很棒的。产品呢,要简单,操作方便,功能清晰,最好你家小朋友都可以马上学会使用,这样当然是最好的了。
问3:Java基础---应该有什么样的准备和多深的积累?(提问者:jheee)
其他方面的基本都问到 了,就问下Java基础相关的吧。看完您回答的其他问题,感觉很棒。
如果以后打算从事Android应用开发,或大数据方向,就Java基础而言,应该有什么样的准备和多深的积累?
谢谢。
答3:
你好,先谢谢你的肯定。
关于Java基础,其实就那一些东西,简单的概念,简单的算法,简单的容器,简单的设计模式,很简单的知道就可以开始安卓开发了。
安卓开发,运用比较多的是安卓上的概念,比如四大组件,四大布局,基本参数,窗体,View,开源框架,会用这些也就满足基础的开发任务。
至于想更高效一些,更多的是经验之谈,每个人可能都不太一样,可能你做新闻客户端,他做视频播放,我做金融客户端,还有做游戏的,每个方向重心不同,自然所学的技术也就不同;个人是专注应用程序开发,几乎没做过游戏客户端,所以提供的也仅是应用层的经验。
比如线程:它的定义、多进程的实现和管理,同步和异步的实现原则,如何实现并发,高效的原则,甚至虚拟机的定义,内存大小,缓存机制的设计等
比如界面:如何画出,每个动作会触发哪些底层和表层操作,内存占比,动画,与多层界面的交互,如View、ViewGroup、Window、Activity等
比如布局:内边距、外边距、weight比例、tableLayout缩哪行哪列,hierachy层级关系,字体色值,样式,自定义属性等
当然还有很多,最近准备出一本书,估计要等的比较久,是写这些东西的,可以先参考下本人的博客,基础篇、进阶篇、高级篇、源码篇。
关于大数据,自己没做过,只是有朋友在做,那天他在依据算法,对一些byte流、char等字符做操作,这个可能对Java底层要求严格一些,比如位、内存存储和引用及使用、回收机制、算法等等,由于是界面化的,你可以买本大数据的书看一看。