每周源代码10 – 被指有害的模式
[原文发表地址] The Weekly Source Code 10 - Patterns Considered Harmful
[原文发表时间] 2007-10-30 21:54
沿袭我一贯的信念,阅读源代码以编出更好的程序,我为大家奉上第2篇每周系列“每周源代码”,之后还将源源不断地继续。这里是我这周在读的一些代码。
我们这周的主题是“被指认为有害的模式”,在这里为大家呈现一些我们“不该做的”源代码样本。
Brad Vincent.的ÜberUtils - Strings。不喜欢System.String?那么用C# 3.0扩展函数点焊一些有用的东西上去吧。Brad解释了为什么他的util会被认为不好:
“我知道有些人肯定想说,这是滥用扩展函数,但看看我的字符串有多强大,在我的字典里,任何可以帮我更快更好地写代码的,都不能算作是滥用。这是很聪明的编码!”
这是他众多有用增补中的两个,你几乎不能将它认定为有害:
1: public static string XOR(string input, string strKey)
2: {
3: if (IsEmpty(input)) return input;
4: string strEncoded = string.Empty;
5: int nKeyIndex = 0;
6: for (int i = 0; i < input.Length; i++)
7: {
8: strEncoded += Convert.ToChar(input[i] ^ strKey[nKeyIndex]);
9: nKeyIndex++;
10: if (nKeyIndex == strKey.Length) nKeyIndex = 0;
11: }
12: return strEncoded;
13: }
14:
15: public static string ToTitleCase(string Input)
16: {
17: return System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(Input);
18: }
“不,你被CS人员洗脑了,他们认为Niklaus Wirth (编者:《GOTO应被认为有害》的作者)其实知道他在说什么。但其实他不知道。他根本没有线索和证据。 ”
我想Edsger Dijkstra在他结构化编程中引用了一点儿“goto是恶魔”?
没错,他的确引用了,但他已经死了,我们不能对逝者不敬。所以这些天,我只能大说特说Niklaus Wirth ,他采用了“结构化编程”并用他的语言(Pascal和Modula-2 )进行了强化,于是就把他的邪恶灌输给下一代可怜的CS学生,他们能学到的语言几乎都不能运用到实际工作中去 。
——Linus
把一切都归为一句。我会就此单独写一篇文章,但是Lee Holmes(Windows PowerShell指导书的作者)和我最近在做一些PowerShell的东西,解析CSV文件,还有这个。Lee并不推荐这个,但是我觉得这个还不错:
1: Import-CSv File.csv | Select File,Hits | Group { $_.File -replace '/hanselminutes_(\d+).*','$1' } | Select Name,{ ($_.Group | Measure-Object -Sum Hits).Sum }
如果您找到其他还没被好好读过的比较酷的代码,欢迎随时发链接给我。