个人作业week7——前端开发感想总结


1. 反思

首先要谈谈在这次团队项目的工作中,我这边出现过的较为严重的一个问题:
我和HoerWing (后端担当)合作时,最初因为我没有使用github(始终连不上,最后才确认是宿舍有线网的问题,没错就我那一个位置这样= =),所以导致我和后端这块对于代码进展的情况严重不同步,因为我们要同时写一个网页,同时又因为是敏捷的工作模式,所以经常会需要做一些小的修饰,而在这个时候就会冲掉对方先前写的一些逻辑。整个项目中前后端对接是比较后期的一件事儿,所以这个问题最后才暴露出来,不过好在后端这边封装得很好,因此没有拖延整个工作流程太久,用无线连上github并和后端使用了一个共同的分支之后这个问题基本已经解决。


2. 网页开发中的‘大泥球’

我最初理解的是对于前端应该不需要过多考虑这方面的问题,但后来整个页面的绘制加前端逻辑写下来也是上千行的东西,结构和功能逻辑都会比较复杂,比如不同的操作时页面元素的改变,用户保存实验数据,发送XML格式化的数据,后端处理完毕后返回正确结果或异常时按钮的响应情况是不同的,相应的也会伴随着一些页面元件的样式变化,因此后端要做代码复审工作就会变成一件非常捉急的事情,这个在前后端对接的初期成为了一个类似于‘Big Ball of Mud’的东西,不过好在我跟后端沟通后结果了这个问题,那就是我来复审后端添加的逻辑代码,并将纯前端的内容分离拷贝出来以便本地查看实际效果,相比较前端的内容,后端添加的逻辑很精简也很易读,毕竟我这边没有配置过后端框架的环境(事实上也不好去在linux系统下做这些设计的事情,至于虚拟机,我可能会在年底考虑换硬盘的事儿,但是现在没有钱),所以没有办法做到所见即所得,只能采取这么个这种的方案,不过好在对于一个小项目,这一点的影响不算很大。


3. 交易频繁的集市

对于集市和大教堂,我觉得整个软件的项目可以从整体上视为一个大教堂,但是同一个部门(比如网页交互,计算核心开发)内部采取的是集市的模式,那么就会不免常常有两个人修改同一部分,结果出现各种代码上的冲突。对于学生时代的我们而言,将这些冲突通过PM合理分配工作来化解实在是太难了,尽管PM很负责,但是我也能看到,更多时候他是通过自己重写有问题的部分来解决这些问题,相比较归咎于经验不足,我觉得这可能是软件工程中的普遍现象?因此我提倡如果要求敏捷,则对于一个独立出来的负责部门而言,或由一人负责,或由有良好交流的两个人结对编程来完成。这样对于敏捷开发过程中的频繁更新情况,在做代码修正时的内部沟通成本也可以有效降低。


4. 代码优化与软件工程

每个软件在开发的过程中,都会不停地去考虑代码优化,或者说代码可扩展性以及兼容性的问题,因此这就增加了每次代码调整的成本(这要求我们必须重新审视之前所有优化过的地方,但是更常见的场景是你有可能不知道别人所做的那一部分优化),比如为了避免冗余我常常会采用jquery绑定的方式来为一组DOM对象绑定事件函数,但对于单一DOM对象的事件则回归JS的写法;对于中文字体的显示,考虑到网速问题,就放弃用下载来的中文字体去渲染而是通过建立合适的font-family顺序,针对不同的用户调用其系统内置的优化字体去显示(将mac的冬青黑列在win的雅黑之前等等);为了更好的兼容各种浏览器而放弃一些H5的新特性之类;于是当我需要改动的时候我自己都常常会忘记有哪些地方需要重构(在没有用户反馈的前提下),所以我发现果然最好的解决办法还是回归PS(笑


5. Agile 敏捷

考虑到敏捷的要求,我们使用了一些框架,并且参考了一些模板(如se7en)中一些css的写法,并提取出来放到网页的样式表中,此外也在codepen社区上摘了一些HTML+CSS的动态样式(LOADING动画),不过由于bootstrap定义了大量的类名使得做这种事儿命名冲突会比较难于处理,所以能自己写的样式部分我就全都自己写了,对于一些批量使用的样式(比如实验数据表格模态框),就集成到自己定义的样式表里,我觉得这也是一个很好的前端初学者工作模式,用框架去保证兼容性和响应式布局的问题(虽然实际上还是自己写了一些响应式的东西去应付较为特殊的情况),然后不去动框架,手写自己的自定义样式,并在它们反复出现的时候去做集成的工作,对于JS这边我想也是如此,即使引入jquery,一些简单的逻辑,或者较为基础的一些(如AJAX)还是自己用JS原生的方式全部过一遍比较好,一方面有助于深入理解前端开发,另一方面在跟后端对接时也会比较有帮助。

开发时参考过的博客:
网页开发中的中文字体:http://www.ruanyifeng.com/blog/2014/07/chinese_fonts.html
JS中的面向对象:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html

个人作业week7——前端开发感想总结的更多相关文章

  1. 学习web前端开发感想

    1.学习一个技术,不是一看见源代码就是copy,而是仔细阅读后,找到自己想要的,并且自己写出来,自己理解了,下次遇到同样的问题,自己才能解决. 2.在电脑上学习的过程中,我总是先建立一个文本文档,这样 ...

  2. [阅读]个人阅读作业week7(200)

    个人作业week7——前端开发感想总结 此次作业因本人(学号1200)长期不上博客所以密码遗忘,输错次数过多账号被锁,所以在SivilTaram同学的博客下挂我的作业,希望助教老师谅解~谢谢! 1. ...

  3. 【个人博客作业Week7】软件工程团队项目一轮迭代感想与反思

    (发布晚原因:发到团队博客了 一.关于银弹 在佛瑞德·布鲁克斯于1986年发布的<没有银弹:软件工程的本质性与附属性工作>这篇软件工程的经典论文中,作者向我们讲述了软件工程没有银弹这样的理 ...

  4. 个人博客作业week7

    个人阅读作业week7 一.瀑布 软件工程的瀑布模型是1970年由Winston Royce提出来的,即软件的开发按照一个严格的.顺序的.单次的瀑布流开发周期.例如需求分析阶段.概要设计阶段.详细设计 ...

  5. 初学者如何迅速学习web前端开发

    首先告诉你的是,零基础学习开始学习web前端肯定难,web前端的专业程度本身就不简单,学习这事本来就是一件非常煎熬的事情,人都不愿意学习,可是没办法,为了生存掌握一个技能,你必须学,如果你认真的对待, ...

  6. 个人阅读作业WEEK7 (软件工程的瀑布, 大泥球, 教堂,集市,和银弹)

    一 . 关于银弹 (Silver Bullet) 银弹,被引申为解决问题的有效办法.IBM大型机之父福瑞德·布鲁克斯在1986年的论文<没有银弹>中表达了他的观点:软件工程中不存在银弹—— ...

  7. 《编写高质量代码:Web 前端开发修炼之道》 笔记与读后感

    编写高质量代码:Web 前端开发修炼之道/曹刘阳著. —北京:机械工业出版社,2010.5 第一版 涉及到的知识点: 1. CSS Sprites 在国内很多人叫css精灵,是一种网页图片应用处理方式 ...

  8. 前端开发工程师 - 03.DOM编程艺术 - 第1章.基础篇(下)

    第1章.基础篇(下) Abstract: 数据通信.数据存储.动画.音频与视频.canvas.BOM.表单操作.列表操作 数据通信(HTTP协议) HTTP事务: 客户端向服务器端发送HTTP请求报文 ...

  9. 前端开发必备调试工具(Chrome的F12自带的功能和firebug插件差不多)

    前端开发必备调试工具(Chrome的F12自带的功能和firebug插件差不多) 一.总结 Chrome的F12自带的功能和firebug插件差不多 二.前端开发必备调试工具 在前端开发中我们经常会要 ...

随机推荐

  1. Python基础知识:while循环

    1.在循环中使用continue输出1-10之间的奇数 num=0 while num <10: num += 1 if num %2 == 0: #--%--运算符,相除返回余数 contin ...

  2. PHP APP端支付宝支付

    应业务需求,做了支付宝支付和微信支付,今天分享一下手机端app支付宝支付对接流程,实际开发过程是前后端分离,前端调用后端API接口,实现功能返回数据,我所用的跨挤啊为TP5,大致可以分为四步: 1.在 ...

  3. MATLAB线性方程组的迭代求解法

    MATLAB线性方程组的迭代求解法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 一.实验目的 1. 借助矩阵按模最大特征值,判断解方程组的Jacobi ...

  4. nginx配置静态资源访问

    本篇配置使用场景:本地通过浏览器访问linux上某个文件夹下的文件: 1.安装jdk及nginx步骤省略 2.进入正题 (1) 查看nginx安装路径:[root@localhost conf]# w ...

  5. Appium1.9.1 之 Desired Capabilities 释疑

    服务关键字 Desired Capabilities在启动session的时候是必须提供的. Desired Capabilities本质上是以key value字典的方式存放,客户端将这些键值对发给 ...

  6. Pycharm 安装 idea VIM

    直接在线安装 1.File->Settings->Plugins->Install JetBrains Plugins 2.点击install安装ideavim 3.也许需要的切换v ...

  7. ECS简述

    一.查看ECS实例 使用场景 •实例的日常维护 •实例运行状态和详细信息的查看 二.启动ECS实例 使用场景 •实例停止运行之后的再次启动 三.停止.重启ECS实例 使用场景 •实例运行的服务暂停时停 ...

  8. python3 day01 大纲

    1. 简介python 龟叔 89年 人工智能 2. 特点 优点: 简单, 明确, 优雅,跨平台 缺点: 慢 解释型编程语言 分类: 解释型: 一行一行的把代码进行翻译. 执行效率比较低 优势: 跨平 ...

  9. k8s部署失败原因

    可以通过 kubectl describe pods *** --namespace=**** 查看问题描述

  10. Android学习之基础知识四-Activity活动8讲(活动的灵活运用)

    一.判断当前是在哪个活动 1.我们还是接着上一讲的代码,首先创建一个Java类:BaseActivity.java.这个类我们不作为一个活动,也不在AndroidManifest.xml中注册,它只是 ...