作者 | 伍杏玲
出品 | CSDN(ID:CSDNnews)
创新是科技公司之魂。缺少创新因子的公司,无论过去如何辉煌,很快就被市场抛弃。
诺基亚在被微软收购时,其CEO埃洛普说:“我们没有做错什么,但是还是失败了。”
媒体评论道:“诺基亚犯的错,就是把自己的优点极大化后,没留点余地让自己冒险,最后,成为100分的输家。”
所以很多公司均用不菲的奖励鼓励员工创新,但国外有一位程序员最近遇到一件糟心事:公司竟然将专利奖励金大大降低了!他因为这事都快要离职了。
专利奖金减少,我不干了!
原本公司有一项专利的福利:在日常工作之外,员工可以为一个新想法撰写专利,提交给专利团队,如采纳的话,员工能得到300-5000美元的奖励。
有一位高级工程师在过去的两年时间里成功地申请了30多项专利,他仅公开的专利中已获得11万美元的专利奖励。公司将他提交的专利全都用在自己的产品上。
公司最近决定缩减这个政策的福利支出,提交专利的奖励从300美元降至100美元,优质专利则从5000美元降至900美元。由于员工是在业务时间做这事的,降低福利后,很多员工的积极性降低,如今一周仅有两次或一季度3次的申请频率。
于是上文提到的两年拿了11万专利奖励的工程师对此政策表示不满,因为政策调整后,他只能通过晋升来赚更多的钱。
在调整福利待遇之前,他曾公开展示过一项技术,并声称围绕这项技术已经撰写了5项专利。但政策改变后,他像失忆一般,说不记得自己研究过这项技术代码了。
如果这项技术能应用在公司的产品上,将促进其发展,所以公司很重视这。目前公司怀疑他准备要跳槽,并不再信任他。IT部门已经搜索过他的笔记本电脑、OneDrive账户,也找不到一丝关于这技术的文档和代码。
根据公司雇佣协议,他公司工作期间产生的所有知识产权,即使在业余时间做的,也是公司的财产。可该工程师一口咬定:“不知道公司在说什么”。
那么这位程序员的做法是否合理,公司的做法是否合规呢?来看看其他程序员和律师怎么说。
公司合法,员工危险
对此,有人讨论道:人才创新是关键,公司不应该削减政策。
@UseStrict
在削减福利支出后,领导们可能会向上层邀功道:“他们每年都为公司节省了数千美元。”
但其实在大多数行业中,创新是关键,如果削减对工程师创新性福利待遇,公司在不久的将来可能会使自己陷入僵局。我并不怪那个“不记得”老板在说什么的人。
下面这位仁兄提出合理的方案:奖励保持原先的不动,审核标准提高。
@JackFr
我想可能是领导看了这些专利后,认为很大程度上是浪费金钱,可能是因为知识产权不值得为公司支付的钱。
所以我认为最好的解决方案是收紧审查程序:奖励仍和以前一样相同,但通过的专利更少。
有人则对公司的“搜刮”行为进行议论:
@swiftcoder
公司是有权利这样做,但作为一家科技公司的员工,如果我得知我的老板对我这么做,我会在同一天递交辞呈。
信任是双向的,一旦你对员工不信任,你就无法重新获得信任。
对此,CSDN(ID:CSDNnews)采访了北京盈科律所的专利法律师——王柱律师来评估下该公司和员工的做法是否合法:
CSDN:公司自主修改福利政策是否合法呢?
王柱:公司有修改其规章制度的权利,并且该规章制度也没有违反相关法律规定,公司修改福利政策没有问题。
CSDN:员工离职不上交自己在业务时间研究的专利,是否合法?
王柱:首先要看员工发明的技术是否属于职务发明,如果属于职务发明,那该项技术就属于公司,其专利申请权也应当归公司;如果该项技术不属于职务发明,也就是没有利用公司的条件、也与在公司的主要工作不相关,那就属于非职务发明,那该项技术就属于员工个人,员工有自行处理的权利。
那么按照王柱律师所说,如果上文的工程师的专利代码和自己的工作内容相关的话,他有被告的危险了,同时需要上交专利代码。
专利为何重要?
一直以来,专利对科技公司的发展尤为重要,你想想如果公司没有申请专利的话,公司花费大量人力物力研究一项技术出来,一天被他人复制粘贴,迅速抢占你的市场,那么公司之前的努力和付出将付诸东流。
况且获得专利权有三大优势:独占市场;专利费用收入;专利是企业的无形资产,政府有相关的专利奖励政策。
所以近年来,各巨头公司花费大量的人力物力打专利官司:
在华为专利全球第一:哪里跌倒,哪里爬起!提到,华为的专利申请量高达5405件,位居全球第一。华为的申请量,已超过印度、澳大利亚、新加坡等7个国家的申请量总和。
同时华为也严格维护自己的专利权限,在之前为保护自己的无线通信发明专利,曾和三星打了两年官司,最终胜诉。
还有让世界瞩目的苹果和高通喋喋不休的专利之战:据统计,在过去两年中,苹果和高通一共在在6个国家16个司法管辖区进行了总计超过80起司法诉讼。两周前,美国圣地亚哥联邦法院裁定苹果侵犯了高通的三项专利,需向其支付约3100万美元赔偿金。
庞大的专利费用也是一笔巨额收入:在2013年微软收购诺基亚的设备与服务部门(即手机业务)时花了37.9亿欧元,再以16.5亿欧元购买其专利组合的授权。
再者在企业的发展中,大致要经过三个阶段的驱动:市场驱动、领导力驱动和创新驱动。
其中市场和领导力是高层驱动,但创新是每个员工可参与的。
所以说,即使上文中的公司降低专利奖励是合法的,但降低相关福利打消员工的创新积极性,这不利于公司的长远发展。管理高层该放眼未来,重视人才创新。
2019年人工智能系统学:
资料:
Engineer Refusing to File Disclose Patents
新华网:苹果高通专利战持续:美贸易法官再判苹果侵权
【End】
热 文 推 荐
☞小程序多端开源框架黑马!它是如何做到快应用小程序自由转译的?
☞全民 AI !教育部宣布 35 所高校新增 AI 本科专业
☞交恶微软、拒绝乔布斯,21 岁的他是如何开发出 Linux 的?
System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在好看吧!"
点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。
你点的每个“在看”,我都认真当成了喜欢


你是不是也写过几十个中后台页面:
- 搜索表单重复粘贴?
- 状态字段手动判断?
- 时间字段反复 format?
- 页面跳转状态丢失?
看起来你“很会写”,但其实你只是写得多。
这次我们来讲点硬的,不止封装功能,而是把一个列表页写成系统、抽成规则。
🚩 一个最普通的中后台列表页
你熟得不能再熟的结构:
- 搜索 + 表单
- Tab 状态切换
- 表格展示 + 分页
- 编辑跳转 or 弹窗操作
以前我们怎么写?👇
vue代码解读复制代码
搜索
写是能写,但每次都得重复处理这些:
- query 对象手动构造
- 表单字段手动初始化
- 跳转回来状态丢了
- loading、分页拼来拼去
🎯 我要的不是组件,而是规则系统
我希望的列表页只需要这样 👇
vue代码解读复制代码
:form-rule="rule" :table-setup="tableSetup" :fetch-setup="fetchSetup" :tabs-static-list="tabsArr" />
剩下的交给组件:
✅ 表单结构自动渲染
✅ 默认值 + 时间字段自动处理
✅ 查询 / 分页 / 缓存集成
✅ Tab 切换自动记忆
✅ 自定义 slot 灵活扩展
🧱 设计重点拆解
1️⃣ 字段 schema + formModel 解耦
js 代码解读复制代码formSetup = [
{
type: 'datePicker',
field: 'updateDate',
title: '时间范围',
value: [new Date(), moment().add(30, 'days').toDate()],
props: { type: 'range' }
}
]
🔍 schema 控结构,formModel 控值
🧠 这就是典型的配置驱动,字段即规则。
2️⃣ fetchSetup 接管一切行为
js 代码解读复制代码fetchSetup = {
url: '/api/list',
tabs: {
tabFilterKey: 'status',
formDefaults: {
updateDate: [new Date(), moment().add(30, 'days').toDate()]
}
},
timeAdapter: {
updateDate: ['startTime', 'endTime']
}
}
你不需要再 format时间字段,也不需要自己转换字段名了。
3️⃣ Tab 切换自动触发查询 + 状态缓存
- 每个 Tab 对应一个搜索状态
- 切换时恢复上一次状态
- 再次挂载保留分页信息
这不就是“列表状态保持”的理想体验?
4️⃣ 搜索 + 清空统一封装
js 代码解读复制代码@submit → getFormData() → processTimeAdapter() → fetch()
@clear → resetFields + clearStorage
再也不写 search()、reset()、page = 1,这些都应该在组件内搞定!
🧨 实战踩坑回顾(是真的踩了)
❌ setValue
后值又被清空?
👉 是 v-model 自动同步值导致的,得放在 this.$nextTick
后。
❌ formDefaults 被污染?
👉 记得 deepClone
,Vue 响应式会污染原始值!
❌ tabsArr 是接口来的,但子组件不更新?
👉 用 :key="smartListKey"
让组件重新挂载。
🧠 软件工程视角的组件设计
🧩 设计模式:
模式 | 体现 |
---|---|
策略模式 | 不同字段转换策略 |
模板方法 | SmartListView 结构统一,slot 灵活插入 |
观察者模式 | watch formRule 响应变更 |
🧱 工程思想更重要:
- 字段结构统一
- 状态行为集中管理
- 页面逻辑降到最低
🧬 真正的统一方案:我把一页内容,封成了一份 schema
经过一轮又一轮封装、踩坑、重构,我最终把所有列表页的结构 —— 表单、表格、请求、tabs —— 都抽象成了一个 pageSchema
配置对象。
从此,页面不再是写出来的,而是「定义出来的」。
ini 代码解读复制代码schema ="pageSchema" />
一行组件调用,搞定整个列表页。
✅ 我实现了这些功能:
form.fields
→ 自动渲染搜索表单 + 默认值填充table.columns
→ 自动生成表格结构 + 权限 + 字典映射fetch.url
→ 统一封装查询逻辑 + 时间字段转换 + loading 管理tabs.options
→ 动态状态 Tab + 状态缓存 + 自动切换请求schema.transform
→ 自动把字段从组件值映射到接口字段(如日期 range)
再复杂的业务,只需要维护一份 schema 配置。
🔥 现在新增一个列表页只需要:
css 代码解读复制代码export const logPageSchema = {
form: {{ fields: [...] }},
table: {{ columns: [...] }},
fetch: {{ url: '/api/logs' }},
};
以前你要写 300 行 Vue,现在你只需要写 30 行配置。
💬 配置是抽象能力
很多人一看到 schema 就说:
“太麻烦了,还不如直接写。”
但你要知道:
写代码是为了抽象,抽象是为了规模化。
写 v-model
和写 schema
,不是谁轻松谁牛逼,而是:
谁能写出 更多人复用、未来还能自演化 的页面,谁就赢了。
🎯 思考:你以为你在写页面,其实你在构建规则系统
封装 SmartListView
的过程,不是把逻辑揉进组件,而是把行为抽象成规则,把重复变成结构。
你在做的,不只是「减少代码量」,而是:
- 让表单字段具备声明式规则性
- 让页面状态具备可还原能力
- 让组件逻辑具备平台通用性
SmartListView 渲染实现结构图
真正的高级工程感,是这样的:
- 字段有定义中心
- 状态有恢复机制
- 表单有 schema 驱动
- 页面不再“实现功能”,而是“组合能力”
到这一步,你不再是“封装组件的人”,而是:
在定义规则的人
在推动系统的人
在构建平台能力的人
总结一句话:页面≠代码堆砌,字段≠值输入,表单≠UI控件。
真正的前端能力,是让规则生成页面,而不是手写页面。
如果你也在封装列表页、踩坑表单 schema、搞不定状态回填——欢迎评论区分享,我们一起把组件写成系统,写成能力!
🏁 结语:页面 ≠ 技术,规则才是资产
页面能跑只是初级
页面清晰是中级
页面可控是高级
真正的高级前端,不写页面,而是定义页面怎么写。
欢迎留言交流 👉 你最近写的列表页,还在重复写啥?
评论记录:
回复评论: