为什么在地书写的还可以,可是水笔写在纸上怎么去除写就不中看

每天登录浙中在线,分享自己美好心情
There is a story in everyone's heart, but it is only learned
世间最好的默契,并非有人懂你的言外之意,
andyjin1028
你将拥有的家庭,
比你出身的那个家庭重要
纸妹厚德载物
Ps:啊哦~只能在客户端里面玩哦~最尴尬的事 忘了“尴尬”怎么写
原标题:最尴尬的事 忘了“尴尬”怎么写
网上流传一个谜语:提笔忘字,打一类人。谜底:书“生”。 成都商报记者 吴晗 柯娟热线征集关于写字的故事 你也患上了“电脑失写症”吗?你也有关于写字的趣事囧事想与大家分享吗?你有很好治疗“电脑失写症”的办法吗?如果你有“提笔就忘字”哭笑不得的故事、难以解决的麻烦、令人头疼的经历。都可以拨打《成都商报》热线电话分享古语云“秀才提笔忘了字”,如今,忘字的“秀才”是越来越多。“辩论”“辨析”“辫子”“花瓣”、“人才”“人材”、“英雄辈出”、“功夫”“工夫”、“部署”、“不胫而走” ……这些常常容易弄混淆的字,在用拼音输入时会很方便地找到正确的字,甚至有些拼写软件会提供“猜字”功能,对前后鼻音、平翘舌的错误也能很好地掩盖,一样可以打出你想要的字。但是,如果只给你一支笔一张纸,你能否依旧准确无误地写出上面这些易错字?除了签签名,你有多久没写字了呢?一个尴尬的现象忘记“臀”字做风衣量“屁”围案例一:“钥匙”写不起 研究生遭奚落昨日,某重点大学建筑系研究生刘鹏有些郁闷,他在微博上说:“今天被宿管大爷教训了,提笔就忘字,哥是文盲!”原来,刘鹏昨日下午去宿管借健身房钥匙,不想宿管大爷让其登记时他却忘了“钥匙”二字怎么写。“当时宿管大爷拿出钥匙,并让我做一下登记。不晓得神经短路还是怎么的,我竟然忘了‘钥匙’两字咋个写。”刘鹏告诉成都商报记者,后来还是宿管大爷帮他写的。不过,宿管大爷的一句话,让他瞬间无地自容———大爷说:你们这些大学生,学也不知道怎么上的,连中国汉字都忘了。案例二:“臀围不就是屁股的周长嘛”新浪微博用户“路过浔阳”发微博称:“公司要订做风衣,我去楼下干洗店找阿姨量三围以及袖长、身长……胸围和腰围这几个字,估计所有人都会写。难就难在‘tun’围。不会写呀,提笔就忘字,最后尴尬地写了个‘屁’围,把阿姨笑死了。”有人在评论里问“那你咋办呢?”“路过浔阳”回道,“当时没带手机,比划了半天还是不会写,当时想臀围不就是屁股的周长嘛。” 案例三:忘记“尴尬” 用拼音代替“尴尬怎么写?”谢艾在心里叹了口气,在笔记本上写下“gan ga”,抬头偷偷看了看她的采访对象又马上低头,心想,“这下真的是尴尬了。”在媒体工作的谢艾是个80后。工作中,她依赖电脑完成稿件,而在采访时,却老是在笔记本上用拼音代替汉字,“实在急了就画个圈圈。”谢艾说,“明明每个字都很熟悉,就是想不起来怎么写。”@张志程-:我弟弟,今年高考,考试时有一题要写“照顾”两字,可“顾”字怎么也想不起来怎么写了……忽窃喜,心想考试时带了瓶饮料进考场,瓶盖内应有“谢谢惠顾”,此顾应和“照顾”同字。于是假装喝水打开瓶盖。只见瓶盖内赫然印有“再来一瓶”。@王会杰刑警 :女儿考试中有一道题:在《红楼梦》中你最同情的人是谁?女儿本来想写“林黛玉”,但一时想不起“黛”字怎么写,就写了最同情贾宝玉,回来问我答得对不对,我说可以的,每个人都有被同情的理由。@大眼睛包子:刚才终于决定出去跑步,有点儿累,跑到大约三千米时不想跑了,电光火石间突然想起来户字下面一个隹就是雇员的雇字一我两三天了总想不起这个字怎么写。于是又跑了两千米。@装载365:今天下午来访某个公司饭堂,填写来访信息时,提笔就忘字,只写了个饭字跑了,都是电子科技惹的祸啊!@常洪雷:打字打多了,提笔就忘字,有天,寻找的寻字不会写了,我问老师,老师无奈地告诉我,一个山加个寸字,我就写出来说,这也不念字啊,老师无语,山字倒过来,我用手比划出个3,然后倒过来,老师瞬间暴汗,我马上就后悔了,然后就想起来了,好丢人。一个惊人的数据9成网友提笔忘字“‘电脑失写症’听起来吓人,其实大家也不需要惊慌。”昨日,华西医院心理卫生中心李静教授接受记者采访时称,人们所谓的“提笔忘字症”有个专业说法叫“电脑失写症”,“这不算是一种医学上的病症,应该说是一种行为现象。”资料显示,由于频繁使用电脑,加之阅读减少,缺少笔迹的书写感和印痕感,对大脑的语言中枢产生不了刺激作用,从而造成了失写现象,即“电脑失写症”。主要表现在电脑的使用者由于长期连续地面对电脑打字,单调且重复地刺激大脑皮层造成了对手写汉字的暂时性失忆。“提笔忘字”是一项“电脑病”。新浪网的一项调查显示:37%的人经常提笔忘字;22%的人想写东西时总想找电脑而不是笔;16%的人觉得除了名字写得还行,其他字基本没法看;13%的人去外面听课或者开会,最怕的就是记笔记。去年,有媒体与腾讯微博进行了一次网络随机投票调查,结果发现有91%以上的网友,曾出现过提笔忘字的情况。此外在书写环节的测试中,当“你想念远方朋友时,会如何与其进行联络?”有60%以上的网友选择了使用、微信、电邮等方式与朋友联系,33%左右的网友则选择了电话联系,只有5%左右的网友选择了写信联系。不仅仅在普通生活中,书写与我们越来越远,连以往“靠笔吃饭”的作家们也逐渐抛弃了手写体,转而改用电脑写作。曾有媒体做过一次调查,对当代中国99位作家进行了采访,其中仍然保留手写书稿习惯的只有陈忠实、王安忆和格非三人。一种弥补的办法只有多提笔 才不至忘字让书写教育回归日常生活人们又该如何来防治“电脑失写症”呢?李静说,“随着科技的发展,由于电脑代替了纸笔,人们对原来完全掌握的一种技能由于缺乏练习而变得生疏,是可以理解的。”既然是由于缺乏练习而导致了“失写”,那么只要加强训练就会取得不错的效果。李静教授提倡大家从转变自身的学习、工作和生活方式开始,尽量在有条件的情况下选择书写汉字,“书写功能可以通过多次训练得以一定的恢复。”有人提出倡导五笔输入法。但也有人指出,五笔只能记住汉字的基本架构,写起字来也难免缺胳膊少腿。湖南师范大学文学院语言学教授彭泽润建议,通过传统书法来弥补这个缺陷,同时通过书法提高国民审美素质。他建议各种考试和招聘要求适当增加汉字规范书写的要求,来促进书法普及。手写能培养思维逻辑能力在上世纪初期,随着钢笔、圆珠笔、铅笔的出现,国人的书写习惯产生了一次巨大的变革,毛笔与砚台、墨盒逐渐退出了我们的书桌案头,取而代之的是圆珠笔芯、墨水瓶和铅笔刀。同样地,当电脑机箱与键盘出现在我们的生活中时,当录音笔、同声传译机、甚至是可以根据声音分析字形的新式软件出现在我们会议的办公桌上时,纸和笔也与我们渐行渐远。手写体的退出舞台,难道仅仅是一次更新换代而已?在黄玉峰看来,手写体的一个重要性,就是培养读书人的思维逻辑能力,“写文章也好,写书法也好,一个字儿不能错,错了可能就要重写,因此那时候人下笔是非常谨慎的,斟字酌句地去构思文章。”曾有幸见过傅雷手稿的黄玉峰,对于傅雷的手稿惊叹不已:“基本上没有什么修改,一气呵成,可见在他下笔之前,是经过非常严谨慎重思考的。”而读过巴金《随想录》手稿的郝铭鉴发现,巴金作品的改动痕迹并不算少,但是每一处的改动都非常清晰:“有时候一个词的改动和变化,你就会感觉到里面的含义不同,进而整句话的含义也会变得不同。”一个时代的隐忧手写终结者:键盘?四大古老文字,即两河流域的楔形文字、中国的甲骨文、埃及圣书体与玛雅文字。只有甲骨文经过书体流变,沿用至今。千百年来,从甲骨文到篆书,再到隶楷行草,汉字的魅力被历代文人墨客演绎得淋漓尽致。然而,一场网络和电脑风暴的洗礼,让我们的双手习惯于飞快地掠过键盘敲出一个个汉字。不难看出“网络依赖症”和“电脑失写症”对汉字书写的巨大影响。突然有一天,当你提起笔来,却发现曾经对汉字的熟悉感烟消云散,“提笔忘字”的频率越来越高,手写出来的汉字竟然如此不中看。你是否想过,这意味着什么?这些方块汉字仅仅是一种符号和工具吗?备受人推崇的“字如其人”可有体现?文字中洋溢着的情感可否让你感到温暖?也许有人说,汉字不过是传递信息的载体,是“敲”出来的还是“写”出来的并无很大差别。但作为炎黄子孙的我们,肩上承载着的是传承中华传统文化的重任。众所周知,一个民族的文化是否能够发扬光大,不是取决于它吸收了多少外来的精华,而是决定于这个民族优秀的文化是否得到很好的传承。在遥远的北美、欧洲、澳洲,汉字更是遭遇“墙内开花墙外香”的尴尬。一座座学院大受海外人士追捧,会不会将来有一天我们想学一手漂亮的汉字时,要漂洋过海才能如愿以偿?全球汉语学习者稳步增加,汉语使用日益广泛,不难看出“提笔忘字”是我们自身的问题,是国人自己在飞速发展的今天模糊了对文字的信仰。导致汉字书写遭冷遇的原因是多重的,有人说是技术的冲击,有人将其归结为社会的功利性和对汉字内涵认知的不足。“保卫汉字”的呼声此起彼伏,然而,光靠专家和媒体的鼓与呼远远不够。“保卫汉字”需要政府、社会、家庭的共同努力。一种畅想哪些职业在未来数十年内,仍会保持着手写这一习惯?决策者———签署合作协议、对文件进行批示等等,都需要决策者们手写签名,因此在短时间内,他们或许还会保持手写的习惯。学生———在可预见的将来,作业是必须写的,哪怕你可以通过搜索引擎找到作业的答案,仍然需要你一字不错地誊抄到本子上。医生———医生看病,填写病历,开处方药,都需要先用手写的方式进行。书法家———写字,那可是饭碗啊!笔迹鉴定专家———只要实体书写还存在,笔迹鉴定专家可能就会一直与书写打交道,甭管他们出具的鉴定报告是手写还是电脑打印的,起码研究笔迹的人,如果不先练习一下笔迹,怎么能从事这一职业呢?部分语言文字学专家———目前大学老师们写板书的少了,做PPT的多了,或许再过个二三十年,只有大学里的那些文字学专家们,还会使用手写体吧? (山东商报)美国《洛杉矶时报》曾刊登了一篇题为《越来越多中国人发现自己常常忘记如何正确书写汉字》的文章。“几乎你遇到的任何中国人都坦诚自己记忆力衰退,就像患老年痴呆的某个状态。握紧笔的手在纸上要写字时,突然出现了尴尬的停顿,而这些字在孩提时代不知道学习、重复默写过多少次。”此文被翻译至国内后,立即引发了一场关于“新文盲”的大讨论。
用手机随时随地看新闻
独家独到独立
所有评论仅代表网友意见,凤凰网保持中立
&同步到微博
04/21 07:02
04/21 07:02
04/21 07:02
04/21 06:49
04/21 11:28
03/09 16:46
02/24 09:56
03/09 16:45
03/09 16:45
02/27 16:10
03/13 08:17
03/12 08:43
03/12 07:22
03/12 07:57
03/20 09:48
09/07 09:38
09/07 09:38
09/07 09:39
09/07 09:39
09/07 09:39
04/26 09:49
04/23 08:47
04/23 08:57
04/23 09:14
04/23 09:22
48小时点击排行
财经 · 房产
娱乐 · 时尚
汽车 · 旅游
科技 · 健康高中化学问题,看第四小问,那个方程式为什么不写成我在纸上写的那形式?_百度知道
高中化学问题,看第四小问,那个方程式为什么不写成我在纸上写的那形式?
我有更好的答案
如果是能除去Fe2+的话(题目中),那就应该不是碱性吧,Fe2+不能在碱性条件下存在这仅仅是我猜的。。。具体原因也不太清楚
采纳率:75%
因为处理的水(应该是自来水吧)呈弱酸性,不存在大量的OH-
可是从题目里面反应不出来
即使这样,我想把这种水当做中性处理会更恰当点。一般的水也是偏酸性的,像雨水,蒸馏水。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Computer Vision
如何编写无法维护的代码(现实中有的程序员就是这么干的)
让自己稳拿铁饭碗 ;-)
– Roedy Green(翻译版略有删节)
http://blog.jobbole.com/80241/
永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无能。 — 拿破仑
为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍。这些大师写的代码极其难以维护,后继者就是想对它做最简单的修改都需要花上数年时间。而且,如果你能对照秘籍潜心修炼,你甚至可以给自己弄个铁饭碗,因为除了你之外,没人能维护你写的代码。再而且,如果你能练就秘籍中的全部招式,那么连你自己都无法维护你的代码了!
(伯乐在线配图)
你不想练功过度走火入魔吧。那就不要让你的代码一眼看去就完全无法维护,只要它实质上是那样就行了。否则,你的代码就有被重写或重构的风险!
Quidquid latine dictum sit, altum sonatur.
(随便用拉丁文写点啥都会显得高大上。)
想挫败维护代码的程序员,你必须先明白他的思维方式。他接手了你的庞大程序,没有时间把它全部读一遍,更别说理解它了。他无非是想快速找到修改代码的位置、改代码、编译,然后就能交差,并希望他的修改不会出现意外的副作用。
他查看你的代码不过是管中窥豹,一次只能看到一小段而已。你要确保他永远看不到全貌。要尽量让他难以找到他想找的代码。但更重要的是,要让他不能有把握忽略任何东西。
程序员都被编程惯例洗脑了,还为此自鸣得意。每一次你处心积虑地违背编程惯例,都会迫使他必须用放大镜去仔细阅读你的每一行代码。
你可能会觉得每个语言特性都可以用来让代码难以维护,其实不然。你必须精心地误用它们才行。
“当我使用一个单词的时候” Humpty Dumpty 曾经用一种轻蔑的口气说, “它就是我想表达的意思,不多也不少。“
– Lewis Carroll — 《爱丽丝魔镜之旅》, 第6章
编写无法维护代码的技巧的重中之重是变量和方法命名的艺术。如何命名是和编译器无关的。这就让你有巨大的自由度去利用它们迷惑维护代码的程序员。
妙用&宝宝起名大全
单字母变量名
创造性的拼写错误
首字母大写的缩写
辞典大轮换
首字母大写
使用非英语字母
看上去没啥不对是吧?嘿嘿嘿…这里的第二个 ínt 的&í&实际上是东北欧字母,并不是英语中的 i 。在简单的文本编辑器里,想看出这一点点区别几乎是不可能的。
巧妙利用编译器对于命名长度的限制
下划线,真正的朋友
混合多语言
扩展 ASCII 字符
其他语言的命名
= (slash + asterix) /
令人眩晕的命名
marypoppins
= (superman + starship) /
这一招可以让阅读代码的人陷入迷惑之中,因为他们在试图想清楚这些命名的逻辑时,会不自觉地联系到不同的感情场景里而无法自拔。
何时使用 i
惯例 — 明修栈道,暗度陈仓
忽视 Java 编码惯例,Sun 自己就是这样做的。幸运的是,你违反了它编译器也不会打小报告。这一招的目的是搞出一些在某些特殊情况下有细微差别的名字来。如果你被强迫遵循驼峰法命名,你还是可以在某些模棱两可的情况下颠覆它。例如,inputFilename 和 inputfileName&两个命名都可以合法使用。在此基础上自己发明一套复杂到变态的命名惯例,然后就可以痛扁其他人,说他们违反了惯例。
小写的 l 看上去很像数字 1
把全局命名重用为私有
误导性的命名
让每个方法都和它的名字蕴含的功能有一些差异。例如,一个叫 isValid(x)的方法在判断完参数x的合法性之后,还顺带着把它转换成二进制并保存到数据库里。
当一个bug需要越长的时间才会暴露,它就越难被发现。- Roedy Green(本文作者)
编写无法维护代码的另一大秘诀就是伪装的艺术,即隐藏它或者让它看起来像其他东西。很多招式有赖于这样一个事实:编译器比肉眼或文本编辑器更有分辨能力。下面是一些伪装的最佳招式。
把代码伪装成注释,反之亦然
j&array_ j+ =8)
&&&&&total
+= array[j+0 ];
&&&&&total
+= array[j+1 ];
&&&&&total
+= array[j+2 ];
&&&&&total
+= array[j+6 ];
&&&&&total
+= array[j+7 ];
如果不是用绿色标出来,你能注意到这三行代码被注释掉了么?
用连接符隐藏变量
local_var xy_z
可以把 “xy_z” 打散到两行里:
local_var xy\
这样全局搜索 xy_z 的操作在这个文件里就一无所获了。 对于 C 预处理器来说,第一行最后的 “\” 表示继续拼接下一行的内容。
任何傻瓜都能说真话,而要把谎编圆则需要相当的智慧。- Samuel Butler (1835 – 1902)
不正确的文档往往比没有文档还糟糕。- Bertrand Meyer
既然计算机是忽略注释和文档的,你就可以在里边堂而皇之地编织弥天大谎,让可怜的维护代码的程序员彻底迷失。
在注释中撒谎
只记录显而易见的东西
记录 How 而不是 Why
该写的别写
在注释里挑拨离间
clever_SSInc
可能的话,除了注释之外,这些攻击抹黑的内容也要掺到代码里的重要语义部分,这样如果管理层想清理掉这些攻击性的言论然后发给外部承包商去维护,就会破坏代码结构。
编写无法维护代码的基本规则就是:在尽可能多的地方,以尽可能多的方式表述每一个事实。- Roedy Green
编写可维护代码的关键因素是只在一个地方表述应用里的一个事实。如果你的想法变了,你也只在一个地方修改,这样就能保证整个程序正常工作。所以,编写无法维护代码的关键因素就是反复地表述同一个事实,在尽可能多的地方,以尽可能多的方式进行。令人高兴的是,像Java这样的语言让编写这种无法维护代码变得非常容易。例如,改变一个被引用很多的变量的类型几乎是不可能的,因为所有造型和转换功能都会出错,而且关联的临时变量的类型也不合适了。而且,如果变量值要在屏幕上显示,那么所有相关的显示和数据录入代码都必须一一找到并手工进行修改。类似的还有很多,比如由C和Java组成的Algol语言系列,Abundance甚至Smalltalk对于数组等结构的处理,都是大有可为的。
利用Java的冗余
Bubblegom();
= swimner + 1;
永远不做校验
有礼貌,无断言
复制粘贴修改
使用静态数组
巨型监听器
好事成堆TM
myPanel.add(
getMyButton() );
JButton getMyButton()
&&&&&return
友好的朋友
使用三维数组
混合与匹配
就是 Final
全局变量,怎么强调都不过分
再一次说说全局变量
对于编写无法维护代码的任务来说,面向对象编程的思想简直是天赐之宝。如果你有一个类,里边有10个属性(成员/方法),可以考虑写一个基类,里面只有一个属性,然后产生9层的子类,每层增加一个属性。等你访问到最终的子类时,你才能得到全部10个属性。如果可能,把每个类的声明都放在不同的文件里。
= &three&;
&&&&printf(&%s&,
&&&&break;
一致性的小淘气
嵌套 Switch
利用隐式转化
使用八进制数
= new int []
myfunc(int
p) { return
myfunc(6291,
8)[Array];
遗憾的是,这一招只能在本地C类里用,Java 还不行。
放长线钓大鱼
使用异常的时机
狂热奔放地使用线程
在程序里留些bug,让后继的维护代码的程序员能做点有意思的事。精心设计的bug是无迹可寻的,而且谁也不知道它啥时候会冒出来。要做到这一点,最简单的办法的就是不要测试代码。
永远不要做性能测试
永远不要写任何测试用例
测试是给懦夫用的
勇敢的程序员会跳过这个步骤。太多程序员害怕他们的老板,害怕丢掉工作,害怕客户的投诉邮件,害怕遭到起诉。这种恐惧心理麻痹了行动,降低了生产率。有科学研究成果表明,取消测试阶段意味着经理有把握能提前确定交付时间,这对于规划流程显然是有利的。消除了恐惧心理,创新和实验之花就随之绽放。程序员的角色是生产代码,调试工作完全可以由技术支持和遗留代码维护组通力合作来进行。
如果我们对自己的编程能力有充分信心,那么测试就没有必要了。如果我们逻辑地看待这个问题,随便一个傻瓜都能认识到测试根本都不是为了解决技术问题,相反,它是一种感性的信心问题。针对这种缺乏信心的问题,更有效的解决办法就是完全取消测试,送我们的程序员去参加自信心培训课程。毕竟说起来,如果我们选择做测试,那么我们就要测试每个程序的变更,但其实我们只需要送程序员去一次建立自信的培训课就行了。很显然这么做的成本收益是相当可观的。
编程语言的选择
计算机语言正在逐步进化,变得更加傻瓜化。使用最新的语言算什么好汉?尽可能坚持使用你会用的最老的语言,先考虑用穿孔纸带,不行就用汇编,再不行用FORTRAN 或者 COBOL,再不行就用C 还有 BASIC,实在不行再用 C++。
宏汇编调用C
如果你有个汇编模块被C调用,那就尽可能经常从汇编模块再去调用C,即使只是出于微不足道的用途,另外要充分利用 goto, bcc 和其他炫目的汇编秘籍。
与他人共事之道
老板才是真行家
颠覆技术支持
每月一书俱乐部
加入一个计算机每月一书俱乐部。选择那些看上去忙着写书不可能有时间真的去写代码的作者。去书店里找一些有很多图表但是没有代码例子的书。浏览一下这些书,从中学会一些迂腐拗口的术语,用它们就能唬住那些自以为是的维护代码的程序员。你的代码肯定会给他留下深刻印象。如果人们连你写的术语都理解不了,他们一定会认为你非常聪明,你的算法非常深奥。不要在你的算法说明里作任何朴素的类比。
你一直想写系统级的代码。现在机会来了。忽略标准库, 编写你自己的标准,这将会是你简历中的一大亮点。
推出你自己的 BNF 范式
推出你自己的内存分配
地球人儿都知道,调试动态存储是复杂和费时的。与其逐个类去确认它没有内存溢出,还不如自创一套存储分配机制呢。其实它无非是从一大片内存中 malloc 一块空间而已。用不着释放内存,让用户定期重启动系统,这样不就清除了堆么。重启之后系统需要追踪的就那么一点东西,比起解决所有的内存泄露简单得不知道到哪里去了!而且,只要用户记得定期重启系统,他们也永远不会遇到堆空间不足的问题。一旦系统被部署,你很难想象他们还能改变这个策略。
其他杂七杂八的招
如果你给某人一段程序,你会让他困惑一天;如果你教他们如何编程,你会让他困惑一辈子。 — Anonymous
不要重编译
让我们从一条可能是有史以来最友好的技巧开始:把代码编译成可执行文件。如果它能用,就在源代码里做一两个微小的改动 — 每个模块都照此办理。但是不要费劲巴拉地再编译一次了。&你可以留着等以后有空而且需要调试的时候再说。多年以后,等可怜的维护代码的程序员更改了代码之后发现出错了,他会有一种错觉,觉得这些肯定是他自己最近修改的。这样你就能让他毫无头绪地忙碌很长时间。
挫败调试工具
对于试图用行调试工具追踪来看懂你的代码的人,简单的一招就能让他狼狈不堪,那就是把每一行代码都写得很长。特别要把 then 语句 和 if 语句放在同一行里。他们无法设置断点。他们也无法分清在看的分支是哪个 if 里的。
公制和美制
在工程方面有两种编码方式。一种是把所有输入都转换为公制(米制)计量单位,然后在输出的时候自己换算回各种民用计量单位。另一种是从头到尾都保持各种计量单位混合在一起。总是选择第二种方式,这就是美国之道!
要持续不懈地改进。要常常对你的代码做出“改进”,并强迫用户经常升级 — 毕竟没人愿意用一个过时的版本嘛。即便他们觉得他们对现有的程序满意了,想想看,如果他们看到你又“完善“了它,他们会多么开心啊!不要告诉任何人版本之间的差别,除非你被逼无奈 — 毕竟,为什么要告诉他们本来永远也不会注意到的一些bug呢?
”关于“一栏应该只包含程序名、程序员姓名和一份用法律用语写的版权声明。理想情况下,它还应该链接到几 MB 的代码,产生有趣的动画效果。但是,里边永远不要包含程序用途的描述、它的版本号、或最新代码修改日期、或获取更新的网站地址、或作者的email地址等。这样,所有的用户很快就会运行在各种不同的版本上,在安装N+1版之前就试图安装N+2版。
在两个版本之间,你能做的变更自然是多多益善。你不会希望用户年复一年地面对同一套老的接口或用户界面,这样会很无聊。最后,如果你能在用户不注意的情况下做出这些变更,那就更好了 — 这会让他们保持警惕,戒骄戒躁。
写无法维护代码不需要多高的技术水平。喊破嗓子不如甩开膀子,不管三七二十一开始写代码就行了。记住,管理层还在按代码行数考核生产率,即使以后这些代码里的大部分都得删掉。
只带一把锤子
一招鲜吃遍天,会干什么就吆喝什么,轻装前进。如果你手头只有一把锤子,那么所有的问题都是钉子。
有可能的话,忽略当前你的项目所用语言和环境中被普罗大众所接受的编程规范。比如,编写基于MFC 的应用时,就坚持使用STL 编码风格。
翻转通常的 True False 惯例
把常用的 true 和 false 的定义反过来用。这一招听起来平淡无奇,但是往往收获奇效。你可以先藏好下面的定义:
把这个定义深深地藏在代码中某个没人会再去看的文件里不易被发现的地方,然后让程序做下面这样的比较
( var == TRUE )
( var != FALSE )
某些人肯定会迫不及待地跳出来“修正”这种明显的冗余,并且在其他地方照着常规去使用变量var:
还有一招是为 TRUE 和 FALSE赋予相同的值,虽然大部分人可能会看穿这种骗局。给它们分别赋值 1 和 2 或者 -1 和 0 是让他们瞎忙乎的方式里更精巧的,而且这样做看起来也不失对他们的尊重。你在Java 里也可以用这一招,定义一个叫 TRUE 的静态常量。在这种情况下,其他程序员更有可能怀疑你干的不是好事,因为Java里已经有了内建的标识符 true。
在你的项目里引入功能强大的第三方库,然后不要用它们。潜规则就是这样,虽然你对这些工具仍然一无所知,却可以在你简历的“其他工具”一节中写上这些没用过的库。
假装不知道有些库已经直接在你的开发工具中引入了。如果你用VC++编程,忽略MFC 或 STL 的存在,手工编写所有字符串和数组的实现;这样有助于保持你玩指针技术的高水平,并自动阻止任何扩展代码功能的企图。
创建一套Build顺序
把这套顺序规则做得非常晦涩,让维护者根本无法编译任何他的修改代码。秘密保留 SmartJ ,它会让 make脚本形同废物。类似地,偷偷地定义一个 javac 类,让它和编译程序同名。说到大招,那就是编写和维护一个定制的小程序,在程序里找到需要编译的文件,然后通过直接调用 sun.tools.javac.Main 编译类来进行编译。
Make 的更多玩法
用一个 makefile-generated-batch-file 批处理文件从多个目录复制源文件,文件之间的覆盖规则在文档中是没有的。这样,无需任何炫酷的源代码控制系统,就能实现代码分支,并阻止你的后继者弄清哪个版本的 DoUsefulWork() 才是他需要修改的那个。
搜集编码规范
尽可能搜集所有关于编写可维护代码的建议,例如 SquareBox 的建议 ,然后明目张胆地违反它们。
规避公司的编码规则
某些公司有严格的规定,不允许使用数字标识符,你必须使用预先命名的常量。要挫败这种规定背后的意图太容易了。比如,一位聪明的 C++ 程序员是这么写的:
K_THOUSAND 999
编译器警告
一定要保留一些编译器警告。在 make 里使用 “-” 前缀强制执行,忽视任何编译器报告的错误。这样,即使维护代码的程序员不小心在你的源代码里造成了一个语法错误,make 工具还是会重新把整个包build 一遍,甚至可能会成功!而任何程序员要是手工编译你的代码,看到屏幕上冒出一堆其实无关紧要的警告,他们肯定会觉得是自己搞坏了代码。同样,他们一定会感谢你让他们有找错的机会。学有余力的同学可以做点手脚让编译器在打开编译错误诊断工具时就没法编译你的程序。当然了,编译器也许能做一些脚本边界检查,但是真正的程序员是不用这些特性的,所以你也不该用。既然你用自己的宝贵时间就能找到这些精巧的bug,何必还多此一举让编译器来检查错误呢?
把 bug 修复和升级混在一起
永远不要发布什么“bug 修复”版本。一定要把 bug 修复和数据库结构变更、复杂的用户界面修改,还有管理界面重写等混在一起。那样的话,升级就变成一件非常困难的事情,人们会慢慢习惯 bug 的存在并开始称他们为特性。那些真心希望改变这些”特性“的人们就会有动力升级到新版本。这样从长期来说可以节省你的维护工作量,并从你的客户那里获得更多收入。
在你的产品发布每个新版本的时候都改变文件结构
没错,你的客户会要求向上兼容,那就去做吧。不过一定要确保向下是不兼容的。这样可以阻止客户从新版本回退,再配合一套合理的 bug 修复规则(见上一条),就可以确保每次新版本发布后,客户都会留在新版本。学有余力的话,还可以想办法让旧版本压根无法识别新版本产生的文件。那样的话,老版本系统不但无法读取新文件,甚至会否认这些文件是自己的应用系统产生的!温馨提示:PC 上的 Word 文字处理软件就典型地精于此道。
不用费劲去代码里找 bug 的根源。只要在更高级的例程里加入一些抵销它的代码就行了。这是一种很棒的智力测验,类似于玩3D棋,而且能让将来的代码维护者忙乎很长时间都想不明白问题到底出在哪里:是产生数据的低层例程,还是莫名其妙改了一堆东西的高层代码。这一招对天生需要多回合执行的编译器也很好用。你可以在较早的回合完全避免修复问题,让较晚的回合变得更加复杂。如果运气好,你永远都不用和编译器前端打交道。学有余力的话,在后端做点手脚,一旦前端产生的是正确的数据,就让后端报错。
使用旋转锁
不要用真正的同步原语,多种多样的旋转锁更好 — 反复休眠然后测试一个(non-volatile的) 全局变量,直到它符合你的条件为止。相比系统对象,旋转锁使用简便,”通用“性强,”灵活“多变,实为居家旅行必备。
随意安插 sync 代码
把某些系统同步原语安插到一些用不着它们的地方。本人曾经在一段不可能会有第二个线程的代码中看到一个临界区(critical section)代码。本人当时就质问写这段代码的程序员,他居然理直气壮地说这么写是为了表明这段代码是很”关键“(单词也是critical)的!
如果你的系统包含了一套 NT 设备驱动,就让应用程序负责给驱动分配 I/O 缓冲区,然后在任何交易过程中对内存中的驱动加锁,并在交易完成后释放或解锁。这样一旦应用非正常终止,I/O缓存又没有被解锁,NT服务器就会当机。但是在客户现场不太可能会有人知道怎么弄好设备驱动,所以他们就没有选择(只能请你去免费旅游了)。
定制脚本语言
在你的 C/S 应用里嵌入一个在运行时按字节编译的脚本命令语言。
依赖于编译器的代码
如果你发现在你的编译器或解释器里有个bug,一定要确保这个bug的存在对于你的代码正常工作是至关重要的。毕竟你又不会使用其他的编译器,其他任何人也不允许!
一个货真价实的例子
下面是一位大师编写的真实例子。让我们来瞻仰一下他在这样短短几行 C 函数里展示的高超技巧。
Realocate(void*buf,
&&&&&void*
= malloc(os);
&&&&&memcpy((void*)temp,
(void*)buf,
&&&&&free(buf);
= malloc(ns);
&&&&&memset(buf,
&&&&&memcpy((void*)buf,
(void*)temp,
&&&&&return
重新发明了标准库里已有的简单函数。
Realocate 这个单词拼写错误。所以说,永远不要低估创造性拼写的威力。
无缘无故地给输入缓冲区产生一个临时的副本。
无缘无故地造型。 memcpy() 里有 (void*),这样即使我们的指针已经是 (void*) 了也要再造型一次。另外,这样做可以传递任何东西作为参数,加10分。
永远不必费力去释放临时内存空间。这样会导致缓慢的内存泄露,一开始看不出来,要程序运行一段时间才行。
把用不着的东西也从缓冲区里拷贝出来,以防万一。这样只会在Unix上产生core dump,Windows 就不会。
很显然,os 和 ns 的含义分别是”old size” 和 “new size”。
给 buf 分配内存之后,memset 初始化它为 0。不要使用 calloc(),因为某些人会重写 ANSI 规范,这样将来保不齐 calloc() 往 buf 里填的就不是 0 了。(虽然我们复制过去的数据量和 buf 的大小是一样的,不需要初始化,不过这也无所谓啦)
如何修复 “unused variable” 错误
如果你的编译器冒出了 “unused local variable” 警告,不要去掉那个变量。相反,要找个聪明的办法把它用起来。我最喜欢的方法是:
大小很关键
差点忘了说了,函数是越大越好。跳转和 GOTO 语句越多越好。那样的话,想做任何修改都需要分析很多场景。这会让维护代码的程序员陷入千头万绪之中。如果函数真的体型庞大的话,对于维护代码的程序员就是哥斯拉怪兽了,它会在他搞清楚情况之前就残酷无情地将他踩翻在地。
一张图片顶1000句话,一个函数就是1000行
把每个方法体写的尽可能的长 — 最好是你写的任何一个方法或函数都不会少于1000行代码,而且里边是深度嵌套,这是必须的。
一定要保证一个或多个关键文件无法找到。利用includes 里边再 includes 就能做到这一点。例如,在你的 main 模块里,你写上:
&stdcode.h&
Stdcode.h 是有的。但是在 stdcode.h 里,还有个引用:
&a:\\refcode.h&
然后,refcode.h 就没地方能找到了。
(【译者注】为啥找不到呢?仔细看看,现在还有人知道 a:\ 是什么吗?A盘!传说中的软盘…)
到处都写,无处会读
至少要把一个变量弄成这样:到处被设置,但是几乎没有哪里用到它。不幸的是,现代编译器通常会阻止你做相反的事:到处读,没处写。不过你在C 或 C++ 里还是可以这样做的。
【译注】:原文在后面还有一些内容,翻译时略有删减。删节的内容主要是:
我看不懂的部分;
我觉得不怎么好笑的部分(其实很可能是因为没看懂所以找不到笑点);
不容易引起现代程序猿共鸣的老旧内容。
本人水平有限,时间匆忙,难免有误,请读者不吝指出。谢谢!
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 水笔写在纸上怎么去除 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信