南京邮电大学移动互联网俱乐部

关于某App外包开发心得-Android篇(二)

  • 作者: 王涛

项目开发心得——合作篇

第一次做有规模的项目,跟之前的写些小东西相比,主要区别是:那人钱财,给人办事。但是既然是项目,我们就得以集体利益,也就是保质保量的完成东西为最终目标不是?

  1. 与客户交流

    1. 需求明确
      1. 95%以上的需求要定

      2. 改需求 = 做重复劳动 –> 程序员最难受的事情

    2. 阶段交付
      1. 明确交付时间

      2. 阶段交付,确保和客户的需求没有大的偏差

  2. 与UI交流

    1. 设计稿要程序参与
      1. 设计没有代码经验,难免会做出很多让程序心碎的设计

        这里最好熟悉AndroidUI设计推荐风格,因为只有越符合标准,越节约体力不是?

      2. 相同的功能设计的方式有很多种,有程序的参与会选出既好实现又符合需求的设计

      3. 各个部分的效果要讨论明确,不然程序会做画蛇添足的事

        例如我就把一个Item按钮写成了N个按钮,而且不只是多多了几个按钮那么简单

    2. 简洁设计,但要完整
      1. 能够表达清楚叫好了,没必要太花哨

      2. 面面俱到,只要是不用原生的地方都要给出设计资源,这里如果设计师没能考虑周全,我们程序就要做善意的提醒了

    3. Android多平台设计需求
      1. Android最蛋疼的分辨率适配,要明确需要适配的种类,

      2. 这时候就需要设计师要针对各个分辨率设计包括:

        1. 字号,这里需要说一下,建议不要设计太多种类的字号,想清楚要突出的部分,各个部分的之间的关系

        2. 色系,建议不要太花,定好基调,保持风格一致。

        3. 布局,Padding,Margin,border,corners

        4. 字段,要显示的内容,要明确,不然又要重复劳动,看到这四个字就浑身难受!

    4. 图片资源交接
      1. 发送方式

        1. trello.com是个很好的平台,可以用来上传下载图片,很方便,便于分类管理。

        2. 邮件,速度快,便于保存,但不好分类管理,文件多了容易找不到。

      2. 文件夹命名

        1. 建议根据所属页面命名,按层级分类

        2. 建议用英文例如:Home_Bottom_RadioButton

      3. 文件命名
        1. 必须用英文,如果设计用汉字,不仅有乱码风险,而且还得挨个换成英文,累死!

        2. 由于大家对英文单词理解不同,最好先讨论下

  3. 与Web后台交流

    1. API的字段要交流好。这就要建立在:需求确定 –> 设计显示内容确定 –> 程序实现方式确定 –> API的字段交流

    2. API说明文档要交流,不然容易忽略重要内容

      有个API是数据库要用户信息,我想当然以为是GET,但其实是POST,若是Web后台有特别考虑,要特别说明,不然会出现莫名其妙的错误

    3. 更新API要通知,不然会突然找不到数据。尤其是有一次被Web后台坑了,同样的字段,名字却打错了,害我调试好半天

  4. 与客户端合作者交流

    1. 项目开始前的计划:

      1. 项目结构:

        1. 代码:Model,Adapter,Activity,View,Utils,Constant

        2. 资源文件:

          1. 定好各个色值,字号,便于调用且统一

          2. 为了适配,建不同分辨率的资源文件,例如

            • values
            • values-mdpi
            • values-hdpi
            • values-xhdpi
          3. 为了适配,要用demin

          4. 若控件很多且相似,可以用style让代码量减少

      2. 模块划分:这次做的信息类应用,大致上以页面划分

      3. View:下拉菜单,Dialog,Toast,写好接口,方便使用

      4. Utils:应用中的某些部分可以做成工具类,文件操作,用户登录信息操作,网络连接检查等

      5. Constant:应用中的字符串常量

    2. 开发中遇到变化

      1. 几个人同时改动了一个类要注明,例如://Foci Add

      2. 了解别人的代码,为了学习,也为了整个项目更好开发

Comments