这段时间常给来面试的同学用《 你是一个职业的页面重构工作者吗? 》中三个部分的不同阶段去做自测,发现很多人都自我感觉良好,给我的回答基本都是比较高的,只不过实际上提交的面试题所反应出来的并没有那么高。我总结了下,主要有3点:
- 对自己的能力没有足够的了解,没有实事求是的认清自己
- 存在侥幸的心理,希望以较高的答案赢得面试的机会
- 对文章里每一点的理解存在偏差
简单做下说明:
- 对于我们来说是很重要的,只有真正的认清自己的能力,才能知道自己还有哪方面的不足,才能有针对性的提高自己。
- 就是人的问题了,这里也提醒下各位正找工作的同学,正直、诚信,是很多公司十分看重的,也是做人很重要的品德。我不会因为你没有达到文章中的要求而不给面试的机会,但会因为不正直而扣分。
- 也就是我决定写这篇文章的原因了。在文章的讨论中gulu77提到希望能为每个阶段写一篇详细的文章,之后就在想可能需要写一个更详细的说明,当初不想把每一点写得太细,是担心可能会变成误导,毕竟有些地方我有自己的想法。直到在 Webteam 中发表了这篇文章后,很多人对里面的点有疑问,让我觉得现在还不用担心误导的问题,因为根本就没能明白我想说什么。
写《 你是一个职业的页面重构工作者吗? 》的目的是为了帮助暂时找不到方向的同学,所以在读的时候对自己更诚实些,相信会得到更好的效果。
一 设计稿的分析
-
能分清设计稿中的公共与私有的部分
从最基本的开始,分清公共部分如菜单、导航、大框架和每个独立页面所用到的部分等,至少在想法上做不同的对待。
-
在1的基础上对各部分的实现方式有一个初步的方案(包括如何切图、写结构、写样式)
在分清公共和私有部分后,分析最简单的实现方法,如哪些部分是可以平铺的,哪些是可以重复被使用的等等。
-
在1的基础上,准确的给出各部分的实现方案(包括如何切图、写结构、写样式)
在分清公共和私有部分后,能准确的给出各部分的实现方案,如“滑动门技术”的实现方法有2种,选择哪种方法更合适项目?图片应该如何切?应该使用哪种HTML和CSS的写法?
-
在3的基础上,能同时考虑方案的扩展性、复用性及页面性能(包括如何切图、写结构、写样式)
在给出的方案中考虑是否可扩展、如何重复使用、将哪一类的图合并可以最大化页面的性能。这里还要注意有些模块的内容可能是动态的,当内容改变后如何兼容。
-
在4的基础上,考虑整站的结构分布(包括文件分布、目录结构)
考虑上面方案的综合效率,如维护所需要的成本、页面打开速度、带宽成本、服务器开销等等。
1~3点应该成为基本的技能,4~5属于更高的要求。这块的熟练度会影响到后继切图和写代码的效率、返工的机率及维护成本的高低。
二 切图
-
切成所需要的图片(如何将需要的部分切出来)
最基本的,将需要的图切出来,有时候会需要PS出自己需要的图。
-
在1的基础上,对切出来的图片进行一些优化(包括压缩文件大小、选择图片类型)
压缩输出的图片,在不影响画面质量的前提下,尽可能的减少文件字节数。这个工作很重要,优化一张图片所带来的效果可能比优化很多的代码所带来的效果要明显得多。
-
在2的基础上,规划切出来的图片(包括文件分布)
规划切出来的图片,哪些图应该被合并,存放于哪个目录等等。
-
在3的基础上,考虑整体的性能(包括合并图片、压缩文件大小)
同样是综合整体的性能、效率。
1~3点应该成为基本的技能,4属于更高的要求。这块会影响到HTML和CSS的写法,还有页面的性能(流量、链接数)。
三 HTML和CSS的编写
-
还原设计稿视觉效果,并通过标准验证(HTML)
还原设计稿,是页面制作最基本的要求,不管设计稿是否符合自己的审美观,做为页面重构工作者,还原设计稿是一项职业素质。通过标准验证是检验我们输出的质量很重要的一个方法。虽然最终的页面不一定可以通过验证,但我们所输出的静态页面大部分是可以做到通过验证的,除非有特殊的需求。当然我们不是为了过验证而做页面,是为了标准化。
-
在1的基础上,实现多浏览器的兼容(HTML)
兼容多浏览器,要实现多浏览器的兼容,少不要了解下各浏览器的习性。不过对于什么才是兼容,在《 中国式WEB标准 》中有讨论。
-
在2的基础上,标签语义化(HTML)
标签语义化,是WEB标准的核心内容,只有做好了语义化,才能说得上做到了WEB标准。虽然在国内很重有统一的标准,不过一些基本的语义标签的使用还是可以定下的,如段落、列表、表格等等。
-
在3的基础上,选择较优的实现方式(包括模块化结构,方便程序脚本使用,HTML和CSS)
做好了上面3点,只能说单一的页面做好了,下面得考虑两个以上的页面了。模块化就是为了更好的提高复用,减少重复开发所带来的浪费。模块化也是被越来越多的人所关注,可以说是发展的一个趋势,随着大家对HTML和CSS掌握越多,如何更好的发挥它们也成了提高工作效率的重点,其中模块化就是很好的一种方式,打算在之后写相关的内容(时间不好确定)。
-
在4的基础上,考虑到扩展性、复用性和可维护性(HTML和CSS)
做好了模块化,并不一定就是最优化的,如果考虑上扩展性、复用性和可维护方面的内容,模块化有时反而会不利于这几个方面,如何平衡这几方面,是一个更高的要求。
-
在5的基础上,考虑到整站的样式分布(包括如何实现分布)
这个算是整站的规划了,需要多少个样式,多少个目录,这些样式文件分别存于哪个目录(当然同时也需要考虑图片的分布)
-
在6的基础上,样式写法的优化(包括技巧的应用)
这点需要跟上面的第4、5、6点结合,需要做综合的考虑,使用更合适于项目的样式写法。
1~3点为基本的技能,4~7属于页面优化方面的内容。这块影响了一个页面甚至一个站点从无到有、从有到优。掌握好各个点的知识,会让页面在越短的时间内达到最优的状态。当然这也是个人能力的体现。
Rock在 Webteam 文章中的评论十分精彩:
“即设计师给三天的时间,制作只给一天的时间完成”
这一点我有些微言。呵呵,我觉得有些不现实。除非是非常专业的团队,虽然说通常都是这样的流程,但现实来讲:
1.很多设计师不具备模块化的思想,(即使有)通常设计出的稿子也是公用元素太少。往往现实的流程上3天设计师可能做出3个以上的设计。以及“产品经理/策划”无计划的修改。扰乱你的进程不说,还会对你的现有结构(html)产生更改,比如这个加个下一页链接,这个头像上悬浮一个什么图标。这都是很现实的问题。你的结构和你的css会因此看起来很不堪。
2.设计上对自己的要求不严格,通常会有1px-10px的差错,因为我做页面的时候每1px都会很计较,因为没有相应的规范,所以我都是在设计稿上量来量去,会发现很多的问题,因为如果不这样做,上级会认为你工作不认真,1-2px的padding甚至都会影响你的工作成果,在这个问题上我经常会和设计师们沟通很久,通常也会很不满设计的粗糙。
3.高质量的切图与psd/png文件的规范性,这也不得不提,从事这个行业毕竟会遇到各种各样的这类问题,有些psd文件会很规范,分组清晰,栅格化合理,图层混合方式不影响大局栅格化的效果,这些因素都会影响你的切图质量和效率。
4.浏览器的兼容性,这个问题不大,只要做的够久就会知道哪些浏览器的哪些特征,但往往特殊的需求还会使你在ie6上痛苦一番。代码洁癖的你是否愿意结构hack和多层嵌套的html,鱼与熊掌不可兼得,想要更加通用,你需要更多的嵌套和更多的class,想要完美,就意味着随便一个改动就破坏你的平衡。
5.与程序的合作,通常很多程序员也不具备这方面的知识,也就是说,你交给他的模板,等他套完程序,可能完全就是另一套模板了。而最遗憾的是,公司可能并非使用SVN或VSS等源代码管理系统(一种节省成本的方式?),你没有管理模板的权限,你的权限仅限于图片文件夹和css文件夹。仅此而已。程序每套错一个地方,你要花时间去排错。可以说,这个成本很高。
一点个人见解,工作效率的决定因素究竟取决于什么,团队中每个人的专业性
呵呵,我觉得楼主在这些方面太过理想化了,其实我更想这样的操作方式。因为那真是太节省时间和成本了。但现实是完全不同。
从现实的角度说出了大家或多或少遇到的问题,Rock所说的问题的确存在,我也都遇到过,甚至目前还有。设计师和程序员不具备相关的知识的确是一个很大的问题,当然还有领导的重视程度和项目成本等原因。
从WEB标准开始在国内推广算起,差不多有三年半的时间,到现在才有多少同行真正的认同它、学习它、使用它?相信大部分人都还处于“别人都这么做,我也得学学”的状态,更别说是设计师、程序员了。为此,帮助他们认识到标准的好处,如如何使用标准提高工作效率、减少工作压力、减少成本等等,只有他们接受并使用标准,Rock所说的情况才会有好转。要影响、帮助别人,自己就必需先提高自己的能力。做技术的人大都有个特点:有代码洁癖、对自己写的代码要求严格、追求完美。其实很多人并没有一个标准,会这么写往往只是因为自己喜欢,所谓的代码洁癖、严格,都是以自己的喜好来决定的,对个人来说可能算得上是特点,但对项目来说却十分不利,可以说是一种片面的完美。
很少项目是可以一次成型的,也就是说大部分情况下并不完美,修改是少不了的。如果在前期的规划中就没有把这些修改(扩展、兼容)也考滤进去,后面必然会给带来很多困扰。当然扩展和兼容的考滤是在合理的范围内尽可能的支持,并平衡与性能间的矛盾。如何让产品经理、设计师、程序员去减少无理的、不必要的需求、修改,把修改变得可控,这些已经不只是页面制作的内容了,有兴趣的同学欢迎再讨论。
分享到:
相关推荐
重构是软件开发过程中的一个重要环节,它涉及到代码的优化、设计改进和质量提升,而不改变程序的外部行为。本文将详细探讨重构的目的、对象、时机和方法,帮助开发者理解和掌握重构的核心理念。 **重构的目的(Why...
4. **Ant**:Ant是Apache软件基金会的一个项目,是一个基于Java的构建工具。它使用XML来定义构建过程,包括编译、打包、测试和部署等任务。与传统的Makefile相比,Ant更具有平台无关性,易于理解和使用,尤其在大型...
本项目“阳光喔页面重构”提供了一个企业官网的重构实例,包括首页、列表页和详情页等关键页面,旨在帮助学习者理解和掌握HTML和CSS的基本应用,以及页面重构的技巧。 HTML(HyperText Markup Language)是网页内容...
在本文中,我们将探讨一个具体的重构案例,主要集中在Android平台的视频应用上。重构的目的是解决原有代码存在的问题,提升用户体验和开发效率。 首先,重构前的视频频道页面存在几个显著的缺点。第一,频道的显示...
模块化思维是页面重构中一个核心的思想。模块化有助于将HTML和CSS代码分成可复用的部分,这样在多个页面或者项目中就可以避免重复编写相同的代码,大大提高了开发效率和代码的可维护性。模块化要求编写模块时遵循...
寒假前端实训_小米商城部分页面重构.zip寒假前端实训_小米商城部分页面重构.zip寒假前端实训_小米商城部分页面重构.zip寒假前端实训_小米商城部分页面重构.zip寒假前端实训_小米商城部分页面重构.zip寒假前端实训_...
《软件重构讲义》是关于软件开发中重构技术的一份资料,主要涵盖了重构的基本概念、目的、...这份资料为开发者提供了一个深入理解重构概念和技术的框架,对于提升个人和团队的开发效率及软件质量具有重要的指导价值。
在描述中提到的"对经验模态分解后的各分量IMF进行重构代码,函数可直接调用",意味着这个压缩包中包含了一个名为"EMDchonggou.m"的MATLAB脚本文件,该文件提供了实现IMF重构功能的代码。用户可以直接运行这个函数,...
**发散式变化**:当一个类因为多种原因而频繁变化,应将其拆分为多个类,每个类负责一种变化。 **散弹式修改**:如果修改需要涉及大量类,可能表明设计问题,应将相关代码聚合到一个类中。 **依恋情结**:函数对...
9. 阅读《代码重构》的重要性:这本书不仅仅是一本技术手册,它也传达了一种职业精神和追求卓越的软件开发理念。对于希望提升自身代码质量、改善设计思路的软件开发者而言,阅读《代码重构》无疑能够带来深刻的启发...
2. 内联函数(Inline Method):如果一个函数只在一个地方被调用,可以将其内容直接替换到调用位置,减少层次,提高效率。 3. 将类的职责分离(Split Class):如果一个类承担了过多职责,应将其拆分为多个更专注的...
- `l1magic-1.1.tar.gz`:这是一个L1魔法工具的源代码,通常用于实现L1最小化优化问题,这是压缩感知中的一种常见重构算法,旨在找到最稀疏的信号解。 - `PRISM.rar`:PRISM可能是“概率风险感应系统”的缩写,可能...
重构是软件开发中的一个关键概念,指的是在不改变软件外部行为的前提下,对代码进行修改以改进其内部结构。这一过程旨在提高代码的可读性、可维护性和可扩展性,同时减少缺陷。书中的PDF和CHM版本可能涵盖了以下主要...
Martin Fowler还强调了重构的时机,指出重构并非一蹴而就,而应该是一个持续的过程。程序员应该在开发新功能或者修复bug的同时,不断地对代码进行重构,从而保持代码库的健康状态。 《重构》一书中的重构方法虽然是...
为了确保重构后的代码仍然能正确工作,通常会先编写单元测试,然后再进行实际的代码修改。这样可以确保任何变更都不会破坏原有的功能。 2. **逐步进行**:重构应当是一系列小步骤组成的连续过程,而不是一次性大...
首先,重构是软件开发中的一个过程,它不改变软件的功能,而是通过改进代码结构和设计来提高其可读性、可扩展性和性能。在Web开发领域,重构通常涉及HTML、CSS和JavaScript的优化,以符合WEB标准和WEB2.0的原则。 ...
在IT行业中,前端开发是一项至关重要的任务,而“cLayout一键生成重构稿”是一个非常实用的工具,尤其对于UI设计师和前端开发者来说。这个工具基于JavaScript技术,专注于提高工作效率,通过Canvas技术自动识别并...
重构是一个持续的过程,它鼓励开发人员不断审视和改进代码,确保代码质量随着项目的发展而不断提高。通过遵循上述原则,如保持简洁、利用三元运算符、使用常量替换硬编码以及提取重复逻辑,开发人员可以创建出更易于...
按照传统,书籍应该以一个简介开头口尽管我也同意这个原则,但是我发现以概括性的讨论或定义来介绍重构,实在不是件容易的事。所以我决定拿一个实例做为开路先锋。 第1章展示一个小程序,其中有些常见的设汁缺陷,...