论”高仿产品,是否该保存其代码,在既有基础上开发“
2018-03-22 19:26
239 查看
如果要高仿竞争对手的 Web 产品,是否该“保存页面源码,在既有代码基础上修改”呢?
不该
下面,我将抛却版权问题和法律纠纷,单从项目的发展角度上进行解释。
代码有两种形态:
线上形态(产品形态)
工程形态
线上形态,面向终端用户,要解决交互问题,实现:
代码安全(尽可能地保护核心代码);
快速响应
要实现代码安全,需要“丑化”代码;满足“快速响应”,则需要合并、压缩文件。
工程形态,面向开发人员,要解决开发及维护问题,实现:
高内聚,低耦合;
尽量避免大文件,尽可能地以文件为单位分离模块;
工程的可持续迭代能力;
工程的可读性;
工程的可复用性(尤其是做项目的公司,更要具备高复用能力)
由此可见,这两种形态的代码在表现形式上基本上是完全相悖的。
由工程形态向产品形态转化,是水到渠成,自然而然的过程,可以借助成熟的构建工具(如:gulp.js,grunt.js等)合并、压缩和丑化代码。
而由产品形态向工程形态转化,则是相当困难的,或者是高投入低产出。
举例子来讲,一粒种子长成参天大树的过程中,其每个时间点的形态都可以用其之前的形态进行解释,是确定的一条成长轨迹。但由参天大树向种子推演,却有无数种可能。
放在软件开发中,为了解决性能问题而加入的一段“魔法代码”,在反向推演其上下文所在的业务逻辑时,可能就会造成很大困扰。
内化同时的代码,需要时间和精力。没有段落和注释者更甚。更何况内化竞争对手的产品呢?
另一方面,没有人能保证“与XXXX一样就可以了”的需求边界,更不能确定那就是产品的最终形态,因为:
样式或版面需要调整;
功能需要调整或丰富。
而项目需求的满足,是建立在对工程强有力的控制的基础之上的。
一些特性看似简单,但实现起来可能牵一发而动全身。如果对工程的结构,以及模块之间的关联关系没有80%之上的掌握,那么会有相当大的几率把项目做失败。因为你无法预料每一步行动的后果是什么。
不该
下面,我将抛却版权问题和法律纠纷,单从项目的发展角度上进行解释。
代码有两种形态:
线上形态(产品形态)
工程形态
线上形态,面向终端用户,要解决交互问题,实现:
代码安全(尽可能地保护核心代码);
快速响应
要实现代码安全,需要“丑化”代码;满足“快速响应”,则需要合并、压缩文件。
工程形态,面向开发人员,要解决开发及维护问题,实现:
高内聚,低耦合;
尽量避免大文件,尽可能地以文件为单位分离模块;
工程的可持续迭代能力;
工程的可读性;
工程的可复用性(尤其是做项目的公司,更要具备高复用能力)
由此可见,这两种形态的代码在表现形式上基本上是完全相悖的。
由工程形态向产品形态转化,是水到渠成,自然而然的过程,可以借助成熟的构建工具(如:gulp.js,grunt.js等)合并、压缩和丑化代码。
而由产品形态向工程形态转化,则是相当困难的,或者是高投入低产出。
举例子来讲,一粒种子长成参天大树的过程中,其每个时间点的形态都可以用其之前的形态进行解释,是确定的一条成长轨迹。但由参天大树向种子推演,却有无数种可能。
放在软件开发中,为了解决性能问题而加入的一段“魔法代码”,在反向推演其上下文所在的业务逻辑时,可能就会造成很大困扰。
内化同时的代码,需要时间和精力。没有段落和注释者更甚。更何况内化竞争对手的产品呢?
另一方面,没有人能保证“与XXXX一样就可以了”的需求边界,更不能确定那就是产品的最终形态,因为:
样式或版面需要调整;
功能需要调整或丰富。
而项目需求的满足,是建立在对工程强有力的控制的基础之上的。
一些特性看似简单,但实现起来可能牵一发而动全身。如果对工程的结构,以及模块之间的关联关系没有80%之上的掌握,那么会有相当大的几率把项目做失败。因为你无法预料每一步行动的后果是什么。
相关文章推荐
- 常用ios开发基础代码
- unity基础开发----常用代码鼠标滑动,触摸事件
- 安卓开发一些基础的设置代码
- unity基础开发----延迟等待执行代码
- 13、Android开发基础之数据存储-查看保存的数据
- C#开发Windows服务的基础代码
- 如何在遗留代码基础上开发
- 零基础Unity3D游戏开发系列 第三章:Unity脚本编程(十八)代码执行顺序
- 黄聪:如何判断VS开发C#是否为设计模式,以免编译之前操作窗体设计器代码自动运行
- unity基础开发--鼠标移动物体并判断是否移动
- Cocoa Touch(一)开发基础:Xcode概念、目录结构、设计模式、代码风格
- 做蓝牙产品开发都3年了.熟悉软件,硬件,生产,销售..考虑...是否要去新的地方或者自己做了...
- Android开发基础知识Android优化之代码优化
- [零基础学JAVA]Java SE实战开发-37.MIS信息管理系统实战开发[文件保存](2) 推荐
- unity基础开发----延迟等待执行代码
- [iOS开发复用代码小片段]-判断是否合法邮箱
- 14、Android开发基础之通过系统提供的方法获取到保存文件的路径
- java基础一:发展史、特性、架构、代码执行原理、开发环境搭建
- C#开发Windows服务的基础代码
- 项目开发规范(编码规范、命名规范、安全规范、前端优化、源码提交规范、代码维护规范、产品发布规范)