原文地址:https://blog.csdn.net/haoyujie/article/details/80601455

1.  问题引出

这向天,在编写一系列文档。

其中一篇要今天交,前天写好后,一个不小心的操作,多级序号全都乱了。

作为一名典型的中国人,首先我认为是自己不努力,今晚抽出时间,想要解决这个问题。

发现,完全找不到门。

无奈之余,只好百度一下,最近没有办法google了,只好百度。百度上一群人给出的意见都没有用处。

然后去biying了一下,如下,发现有许多人,认为这的确是一个bug.

噢,TMD,是bug???

https://blogs.msdn.microsoft.com/timid/2013/08/29/stupid-microsoft-word-trick-multilevel-numbered-headings/

而且里面的内容说,从2000年就开始了,

好吧。NND,真是令人气氛。

因为这个问题,华人遇到的比较多。后面我们分析原因,但显然,欧美人也好不到哪去!!!

微软从2000年开始,就一直养着这个bug,我们后面也从人性和项目管理的还有公司组织的角度分析一下,耽误我这么长时间。

对了,微软中国那个特别能吹的什么亚勤,这么多年,干什么去了呢?只能怀疑这人可能不用word, 是啊,大家会用PPT,会吹就足够了。

咱们先来解决问题,再来好好吐槽.
如何解决多级列表的bug

先说几句,有人会说,你这个人有问题,你怎么就知道这是个bug呢?这个后面咱们再来抬杠,这的确是个bug.

先说怎么解决吧。

尝试了各种可能性。

一直解决不了。

后来,我想了想,既然有人说这是一个bug,微软是不会随便出bug的,那么,可以从程序员的角度想一下。

程序员,最怕什么?

如果你开的是one person shop,当然是只需要担心是用户不满意了;

但如果你在微软上班,特别是阿三这种思维模式的,用户算个P,只要测试部没办法给我提bug就可以了。

注意,这里面的问题,我提到后面应该说的,在微软的程序员的角度,bug被定义成,测试人员,没办法挑毛病。

嘿!TMD,我们用户背锅吧!

有了这个想法,我立即豁然开朗了。立即猜出来怎么解决了:这二货(但在规避测试方面,是个高手),把多级列表对象与样式表对象,完全分离了!气死人啊。

总之呢,我这个文档,所有的列表项,都要重新处理一遍了!不过总算是解决了问题。
为什么说这是个bug,后面微软到底出了什么问题

这里面,牵扯到一个最最基本的问题,也是最让人头疼的问题:什么是bug.

以前,bug的定义,很简单,也很正确,因为简单的,价值链条是供需双方直接见面的,一定是对的:

以前的bug是这么定义的:与用户的预期不一致。

后来,所谓的软件业,要进行规范化,比如,微软在2002年,过了CMM2,后来还竟然过了CMM4,我操,这个我当时也觉得不敢相信,CMM2就是可以重复了级别的,但我听说,世界上只有一个公司能开发windows,过了CMM2之后,微软历时8年开发出来了空前绝后vista,对不起,可能大多数人没听说过这个东东,我也记不清了。

规范后,那么程序员,面对的,就不再是用户了,而是这些所谓的测试系统。

还记得我讲过的那个NOKIA的测试人员,测苹果的事吧?他拿到后,苦思三天没合眼:如果测出结果比nokia的好,公司一定会把他开掉,因为哪个高管也不想股票跌;如果测得比nokia的差,那就更是事了,与事实不符合,将来公司倒闭时,他就成了最大的背锅者,想了三天,他老婆不小心把这台苹果摔碎了!这下终于想到了办法:苹果手机不结实,达不到准入条件!!!

这下好了。2年后,nokia倒闭了。

现在这个word的multiple list num,也是这么回事。

明知道,与用户的预期不符,但测试部没办法提bug,因为我是站在程序员的角度来写的,这是两个对象:多级列表是一个对象,样式表是一个对,两个对象不相关,用户笨,这不是我程序员的错!

结果是,这样一个站在用户角度,100%是个大bug的问题,过了快20年,还没有解决!

可能还能再过20年。

操。

美国这些年是真不行了。

当然,可能还是有人不服,既然你现在能用了,为什么硬说这是个bug。

这里面,几个原因:

1. 用户写好文章后, 这时,“改”了多级列表,那个改字,我加了引号啊,因为还有一个bug是不让改,这个等会再说,现在的“改”,是用户新建了一个列表的样式,但是用户不可能把所有的级别一起改了,结果是,列表全乱了。

而且,99.99%的用户,这个时候完全是蒙的~~~~我没做错什么啊,上帝为什么要这样对我呢?

就这一点来说,这已经肯定是个bug:刨去把用户当成诸葛亮这件事以外,你不能因为用户的改变,把用户以前的成果破坏掉,这是一个起码的原则。

2. 用户有后悔的权力:好吧,我服了你,但用户发现,再也退不回去了。

为什么呢?因为这个新增的列表,再也删除不掉了。。。。。。。一群乌鸦飞过。一会排成个S一个排成个B啊。

我是服了微软这些仁了。

3. 如果我们叫点真,看一下这张图:

用户已经养成了用上面这几个按钮来标记级别。

在用户看来,多级序号,是这个级别的一个附属品。

这是很正常的思维。

但无奈,程序员的思维比较奇葩啊!

从上图我认为,这就是bug,标题一,标题二那按钮有多大?

再看分级列表在哪呢:

完全不在一个量级上。

但用户万万没想到,这个分级列表,才是大拿!那个看着特大号的“标题一,标题二,“,是太监。

我kao,也就我是程序员,普通百姓,如何能想明白呢?

这么说吧,我在百度上看一顿找,没一个说对的。

这种程序员,真是在谋财海明,当然了,这也是体制决定的:还是那句话:没有有问题的员工,只有有问题的体制!

===================

应当如何来解决这个bug:

这里面,实际上很简单,很简单:

只需要用户可以改变默认的列表就可以了。

好了。太晚了,回去睡了。

真不明白,为什么雷军醉心于PPT,抱着WPS这样的金砖去要饭,还有,当年没有收购foxmail也是雷军一大失误,君子误国啊

[转]微软word的多级列表的bug的解决办法和吐槽的更多相关文章

  1. Word自定义多级列表样式

    Word自定义多级列表样式: 1. 2. 3.取个名字 在这里鼠标移上时显示 : 4. 5. 定义完成,即可使用:

  2. 【转载】IE浏览器常见的9个css Bug以及解决办法

    IE浏览器常见的9个css Bug以及解决办法 我们在浏览网页的时候经常看见这样的现象:某个网页在IE6浏览器中打开很正常,但是在IE8里面打开可能完全变形了.或者也有可能出现完全相反的现象.这让We ...

  3. Dumpzilla工具第615行bug的解决办法

    Dumpzilla工具第615行bug的解决办法   在Dumpzilla使用选项frequency时,会提示SQL语法错误.这是由于其中SQL语句编写错误.需要将615行中: where url l ...

  4. 记CRenderTarget:DrawText()绘制中文乱码的BUG及解决办法

    原文:记CRenderTarget:DrawText()绘制中文乱码的BUG及解决办法 转载请注明出处:http://www.cnblogs.com/Ray1024 一.问题描述 在MFC中使用Dir ...

  5. word定义多级列表

    1.单击开始选项卡里的多级列表按钮,在下拉列表中选择定义新的多级列表 2.先设置第一级编号,选择阿拉伯数字1,2,3,...,并在自动编号“1”的左右分别输入“第”“章”,级别链接到样式选择标题一 3 ...

  6. RCP: P2 Update两个烦人bug和解决办法

    问题 Eclipse新的P2 Update机制,使用起来很方便,如果使用P2 plugin自带的UI,开发者完全不用写任何代码 即可实现application的在线更新. 但是P2 Update至少有 ...

  7. (原创)spring mvc和jersey rest 组合使用时单例对像实例化两次的BUG及解决办法

    项目中没用spring 的restTemplate 而是采用 jersey来做rest 的实现,一直用着,也没发现有什么不对,后来加入了,以quartz用硬编码方式实现,结果启动项目的时候报错 ,具体 ...

  8. ie6双边距bug及其解决办法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 最新版jQuery v3.3.1的BUG以及解决办法(什么问题不重要,怎么解决问题才重要)

    发现问题 最新版的 FineUIPro v5.2.0 中,我们将内置的 jQuery v1.12.4 升级到 jQuery v3.3.1 ,可以看升级记录: +升级到jQuery v3.3.1.    ...

随机推荐

  1. k8s安装之node-autoapprove-certificate-server.yaml

    kubelet证书分为server和client两种, k8s 1.9默认启用了client证书的自动轮换,但server证书自动轮换需要用户开启.方法是: 2.1 增加 kubelet 参数(现已默 ...

  2. formset的简单使用

    1.modelform class StudentStudyRecordModelForm(forms.ModelForm): class Meta: model = StudentStudyReco ...

  3. SpringBoot -基础学习笔记 - 01

    SpringBoot个人笔记-szs 一.使用thymeleaf模板引擎来指定所需资源的位置 可以做到当项目名进行更改后,模板引擎也会进行更新相关的路径;如下图展示,会自动添加crud根目录! < ...

  4. 在golang中使用json

    jsoniter高性能json库 非常快,支持java和go marshal使用的一些坑 package main import ( "encoding/json" "f ...

  5. 使用bufio包和函数式变成实现类似python生成器效果

    package main import ( "bufio" "fmt" "io" "strings" ) type in ...

  6. Tensorflow细节-P112-模型持久化

    第一个代码 import tensorflow as tf v1 = tf.Variable(tf.random_normal([1], stddev=1, seed=1)) v2 = tf.Vari ...

  7. Qt智能指针QPointer, QSharedDataPointer ,QSharedPointer,QWeakPointer和QScopedPointer

    QPointer (4.0) 已经过时,可以被QWeakPointer所替代,它不是线程安全的. QSharedDataPointer (4.0) -- 提供对数据的COPY-ON-WRITE以及浅拷 ...

  8. 【mysql】知识点

    mysql执行原理 只要是B/S架构,都是会有客户端与服务端,mysql也不例外. 首先客户端发出一个请求,这个请求就是一个查询请求(Select),而它请求的对象就是服务端,服务端是怎么处理这项查询 ...

  9. golang-切片

    切片练习 package main import "fmt" /*func main() { arr := [10]int {1, 2, 3, 4, 5, 6, 7, 8, 9, ...

  10. 获取句柄的类型以及对应的ID序号

    遍历所有进程下的所有句柄,以及对应句柄类型. 一丶简介 在有的时候.我们会需要对应句柄名字.以及句柄类型的名称. 以及它所对应的的ID. 因为每个系统不一样.所以每次都是不一样的. 有的时候我们就需要 ...