KISS

好久没有写过代码,这段时间忽然疯了一样地开始研究起来编程。这可能就是所谓的“马怕骑,人怕逼”吧。当无论是外部的还是内在的压力不断地扑面袭来的时候,也许把烂尾多年的编程捡起来,潜心写几个小程序,反而是一种解脱。

细细数来,从小学时候近乎自学的Basic,01年在德国学过VB 6.0,到04年为了搞Firefox扩展汉化而接触的Java,再到搭建这个Blog开始了解的PHP和HTML、CSS,13年为了完成一个人几乎不可能完成的Excel处理而学的VBA,以及前些年自学的C#。虽然多,但没有一个是称得上会的,大多连皮毛都不能算,想想这着实也让人感到遗憾。

当忽然意识到,即便是这连皮毛都算不上的编程依然还有一定的用武之地,依然还是比普通人略胜一筹,甚至能够挣得一口半口的时候,编程,这个在我心中多年从没停止过的念头,总算是有了死灰复燃的理由,燃烧起来了。

统计一下自己的技能,Basic是有一点功底的,起码能看懂代码,能通过搜索解决大多需要解决的问题,虽然VB只学过一丁点,但是有着学习C#时候对Visual Studio的了解,至少在GUI上应该没有太大的障碍。在Excel也会VBA调用一些控件,写一些脚本。C#的感觉很像Java,最近通过慢慢摸索,也大体上了解了一些Java的东西。PHP什么的网络编程目前对于赚钱来说,感觉还有些遥远。姑且先把注意力放在Visual Studio,和Eclipse两个IDE上吧。前几天在VMware Workstation上装了OS X 10.14.4以及Xcode,本想试试SWIFT,然而感觉就像去了另一个世界,99刀的年费感觉也让人望而生畏,还是退而求全吧,即便没有Xcode,至少还有Android Studio和Xamarin,我想写App也能实现吧。

目前成果是写了一个处理SAP导出明细账的VBA,以及逆向了款软件,并且基于这款软件做了对应的Andoid版的KeyGen,架设了一个付费漫画网站,以及给大家做了好些个代理。发现了一些以前从来不曾关注过的论坛和网站,其实也都是些来头很大的了。比如吾爱破解ExcelHomeStack Overflow博客园还有CSDN,确实让我受益匪浅。当然,能顺利用Google也是至关重要的一点。

昨天在写处理Excel的VBA时遇到了个问题,明细账摘要如果在单元中完整显示,则整个表的宽度就过宽,用缩小的方式打印,文字会变得非常的小。虽然我一度觉得这是能接受的,但当我再次审视这样的结果的时候,我想还是把他调整一下吧。那么问题来了,究竟调整到哪个宽度是合适的呢,文字较长的摘要被隐藏起来后要确保它们能够换行,到底要换几行,行高又该如何决定呢。关于这个问题,昨晚我的想法是,用数组或者字典的方式,把每行内的字符数都统计起来,字数相同的合并统计,然后从小到大排列,确保最终找到的那个字符数之上的条目只占总条目的百分之一。然后再统计超出字符数的多少,换算成每行显示会占多少行。再对特定要处理的行进行行高调整,调成换算结果的行数倍的行高。问题就能够被解决。

然而实际操作过程并非那么容易,毕竟即便是VBA,在写代码的时候也不能完全脱离搜索,更多的还是基于他人的代码进行修改调整和优化组合。由于完全没有接触过数组或者字典的操作,在这个地方卡了很长时间。另外还有那个百分之一,其实也并不是通过计算得来的,只不过是个主观的界定。所以这个貌似严密的逻辑里,由于这个主观的百分之一,其实并没有那么智能。于是终于在今天中午的时候卡了壳进行不下去了。

其实有时候可能我们对完美持有的态度会影响了自己的选择:希望通过统计来完成找出最佳宽度的想法,导致了两个问题,第一是逻辑并非严谨,主观的百分之一破坏了客观逻辑,第二也是致命性的,自己并没有能力实现这样逻辑的代码。在反复徘徊之后,我在想,既然百分之一的主观判断影响了整体的客观逻辑,何不彻底推翻客观,只用主观来完成也许会更快更好。

事实也证明了这点,在想通了这个问题之后,我试着通过调整过大页面的宽度,找出在缩小打印之后仍然能够让人接受的宽度,然后基于这个宽度做调整,缩小摘要宽度让整体宽度满足要求。在这之后我发现了Excel是可以通过Range.WrapText来实现单元格自动换行的。至于行高更容易了,自动换行后行高也会自动调整成合适的行高,不管是两行、三行还是更多,完全不需要操心。而实现这个效果,一共只增加了一个If判断和四行代码而已,就这么简单。测试下来,效果真的不错。

这篇文章的标题是KISS,之所以大写是因为它并不是个动词,它是Unix哲学中的一条:Keep ISimple, Stupid。这个Blog曾经最早是没有副标题的,后来增加了“自说自话”作为副标题,再后来我把它移入的主标题,又增加了一个副标题叫做“说真话,办实事,一切从简”。今年了解了Unix哲学之后觉得KISS更加准确地表达了我想表达的内容,于是Blog副标题也就变成了这句英文。说到这里,我想今天解决问题的过程,真的让我体验了一把KISS带来的好处。我觉得我的人生太需要这个了,直到今天有时我还会觉得自己不由自主地就“反KISS”了。

把事情想复杂不一定是坏事,把事情做复杂绝不是好事。希望自己能从今天得到更多的教训,希望今天能够成为一切的开端。