仁者无敌

Java David

 

转:回忆孔先生 文章出处http://www.cnblogs.com/kvspas/archive/2008/12/25/1361932.html#1414287

 

鲁镇的网吧的格局,是和别处不同的:都是当街一个曲尺形的大柜台,柜里面预备着热水和各色各样的饮料和酒。做工的人,傍午傍晚散了工,每每花五块钱,来通宵上网,还可以附送一碗酒,一边喝酒一边上网。——这是二十多年前的事,现在每晚要涨到十块钱,——靠柜外站着,热热的喝了休息;倘肯多花一块钱,便可以买一碟茴香豆,做下酒物了,如果 出到十几块钱,那就能买一样荤菜,但这些顾客,多是短衣帮,上网看的东西都是拿不上台面的,所以都是站着上网的,衙门一来,也好撒腿就跑,短衣帮大抵没有这样阔绰。只有穿长衫的,才踱进店面隔壁的房子里,要酒要菜,慢慢地一边坐喝,一边看着屏幕上那些说不出口的东西。

 
  我从十二岁起,便在镇口的咸亨网吧里当伙计,这个网吧比较大,除了给客人上网的服务,还有帮客人定制一些不三不四的工具的开发部门。一开始,掌柜说,样子太傻,怕侍候不了长衫主顾,就在外面做点事罢。外面的短衣主顾,虽然容易说话,但唠唠叨叨缠夹不清的也很不少。他们往往亲自带着怀表,结帐的时候要看看网吧有没有少算钟点,有的还亲自打电话到格林尼治天文台校对自己怀表有没有跑快了,然后才放心:在这严重兼督下,对计时器做手脚也很为难。所以过了几天,掌柜又说我干不了这事。幸亏荐头的情面大,辞退不得,另一个原因也是我在巨软中国研究院做过几年码农,所以便改为专管写一些psp.net程序的一种无聊职务了。


  我从此便整天的站在柜台里,专管我的职务。虽然没有什么失职,但总觉得有些单调,有些无聊。掌柜是一副凶脸孔,主顾也没有好声气,教人活泼不得;只有孔乙己到店,才可以笑几声,所以至今还记得。


  孔乙己是站着上网而穿长衫的唯一的人。他身材很高大;青白脸色,皱纹间时常夹些伤痕;一部乱蓬蓬的花白的胡子。穿的虽然是长衫,可是又脏又破,似乎十多年没有补,也没有洗。他对人说话,总是满口之乎者也,教人半懂不懂的。因为他姓孔,别人便从描红纸上的上大人孔乙己这半懂不懂的话里,替他取下一个绰号,叫作孔乙己。孔乙己一到店,所有喝酒的人便都看着他笑,有的叫道,孔乙己,你脸上又添上新伤疤了!他不回答,对柜里说,上两个小时,要一碟茴香豆。便排出十九块钱。他们又故意的高声嚷道,你一定又偷了人家的东西了!孔乙己睁大眼睛说,你怎么这样凭空污人清白……”“什么清 白?我前天亲眼见你反编译了kernel32.dll,被鲍掌柜吊着打。孔乙己便涨红了脸,额上的青筋条条绽出,争辩道,借鉴不能算偷……借鉴!……科学家的事,能算偷么?接连 便是难懂的话,什么骆驼命名法是大写在前还是小写在前,什么“using各有几种用法之类,随口便抛出一句:你们这些人,要回家复习功课了,引得众人都哄笑起来:店内外充满了快活的空气。

 
  听人家背地里谈论,孔乙己原来也读过书,还是NVPNCSE,但终于没有进学,又不会营生;于是愈过愈穷,弄到将要讨饭了。幸而写得一手漂亮的代码,运行起来很快很强大,便接一些私活,换一碗饭吃。可惜他又有一样坏脾气,便是摆着看过几本书的架子愤世嫉俗。坐不到几天,便在同事的代码里面挑刺,说这段不符合什么规矩原则,那段没有实现接口……搞得团队很紧张,经常延误工时。如是几次,叫他做事的人也没有了。孔乙己没有法,便免不了偶然做些入侵银行主机的事。但他在我们店里,品行却比别人都好,就是从不拖欠;虽然间或没有现钱,暂时记在粉板上,但不出一月,定然还清,从粉板上拭去了孔 乙己的名字。


  孔乙己喝过半碗酒,涨红的脸色渐渐复了原,旁人便又问道,孔乙己,你当真会编程么?孔乙己看着问他的人,显出不屑置辩的神气。他们便接着说道,你怎的连半个秀才也捞不到呢?孔乙己立刻显出颓唐不安模样,脸上笼上了一层灰色,嘴里说些话;这回可是全是指针堆之类,一些不懂了,随口便抛出一句:“你们这些人,要回家复习功课了,在这时候,众人也都哄笑起来:店内外充满了快活的空气。

 
  在这些时候,我可以附和着笑,掌柜是决不责备的。而且掌柜见了孔乙己,也每每这样问他,引人发笑。孔乙己自己知道不能和他们谈天,便只好向 孩子说话。有一回对我说道,你写过程序么?我略略点一点头。他说,写过,……我便考你一考。茴香豆的茴字,怎样在屏幕上打印出来?我想,讨饭一样的人,也配考我么?便回过脸去,不再理会。孔乙己等了许久,很恳切的说道,不会罢?……我教给你,记着!这些模式应该记着。将来做掌柜的时候,写账要用。我暗想我和掌柜的等级还很远呢,而且我们掌柜也从不将茴香豆上账;又好笑,又不耐烦,懒懒的答他道,谁要你教,不是Console.WriteLine一个草头,然后再一个来回的回字么?孔乙己显出极高 兴的样子,将两个指头的长指甲敲着柜台,点头说,对呀对呀!……回字有四样写法,你知道么?你的这个办法不好,有很多冗余,万一有人写错了,也不好追查责任,我写给你看,你看我综合使用了模板方法模式、桥接模式、抽象工厂模式、通用数据库兼容模式,优美极了:

 

using System;
using System.Data;
using System.Data.Common;

namespace kongyiji
{

    
interface IHui
    
{
        
void Print();
        
void Print(int step);
    }


    
/// <summary>
    
/// 抽象基类,实现通用的草字头输出
    
/// </summary>

    abstract class AHui: IHui
    
{
        IHui i;

        
private IDbCommand comm;
        
private IDbConnection conn;
        
private DbProviderFactory _dbFac;

        
private IDbDataParameter pram;

        
public AHui(DbProviderFactory DbFac)
        
{
            Console.WriteLine(
"");
            _dbFac 
= DbFac;
        }


        
public abstract void Print();

        
protected void SaveSwitch(string hui_type)
        
{
            conn 
= _dbFac.CreateConnection();
            conn.ConnectionString 
= @"Data Source=localhost;Initial Catalog=local_db;Persist Security Info=True;User ID=sa;Password=123456789";
            comm 
= conn.CreateCommand();

            comm.CommandText 
= "INSERT INTO LOG(hui_type) VALUES(@hui_type);";
            pram 
= comm.CreateParameter();
            pram.DbType 
= DbType.String;
            pram.ParameterName 
= "@hui_type";
            pram.Value 
= hui_type;

            
//conn.Open();
            
//comm.ExecuteNonQuery();
            
//conn.Close();
        }


        
public void Print(int step)
        
{
            i 
= HuiFactory.Hui(_dbFac,step);
            i.Print();
        }

    }


    
/// <summary>
    
/// 回字写法
    
/// </summary>

    class SelectHui: AHui
    
{
        
string _hui;

        
public SelectHui(string select_hui, DbProviderFactory DbFac)
            : 
base(DbFac)
        
{
            _hui 
= select_hui;
        }

        
public override void Print()
        
{
            Console.WriteLine(_hui);
            SaveSwitch(_hui);
        }

    }



    
class HuiFactory
    
{

        
public static IHui Hui(DbProviderFactory DbFac,int step)
        
        
{
            IHui temp 
= null;

            
switch(step)
            
{
                
case 1:
                    temp 
= new SelectHui("", DbFac);
                    
break;
                
case 2:
                    temp 
= new SelectHui("", DbFac);
                    
break;
                
case 3:
                    temp 
= new SelectHui("", DbFac);
                    
break;
                
case 4:
                    temp 
= new SelectHui("", DbFac);
                    
break;
                
default:
                    temp 
= new SelectHui("", DbFac);
                
break;
            }


            
return temp;
        }

    }




    
class Program
    
{
        
static void Main(string[] args)
        
{
            DbProviderFactory fac 
= DbProviderFactories.GetFactory("System.Data.SqlClient");
            

            IHui i 
= HuiFactory.Hui(fac,4);
            i.Print();
            i.Print(
2);
        }

    }

}

 

我愈不耐烦了,努着嘴走远。写完后,孔乙己向掌柜的讨来一支烟,还想继续说些什么,见我毫不热心,便又叹一口气,显出极惋惜的样子。


  有几回,邻居孩子听得笑声,也赶热闹,围住了孔乙己。他便给他们吃茴香豆,一人一颗。孩子吃完豆,仍然不散,眼睛都望着碟子。孔乙己着了 慌,伸开五指将碟子罩住,弯腰下去说道,谁能告诉我一个TCP/IP数据包能容纳多少个字,这盘豆子就给谁。,孩子们你望我,我望你,有的伸出五个手指,有的伸出二个手指……孔乙己直起身又看一看豆,自己摇头说,不多不多!多乎哉?不多也。于是这一群孩子都在 笑声里走散了。


  孔乙己是这样的使人快活,可是没有他,别人也便这么过。


  有一天,大约是中秋前的两三天,掌柜正在慢慢的结账,取下粉板,忽然说,孔乙己长久没有来了。还欠十九块钱呢!我才也觉得他的确长久没有 来了。一个喝酒的人说道,他怎么会来?……他打折了腿了。掌柜说,哦!”“他总仍旧是那副看不起人的嘴脸。这一回,是自己发昏,竟然当街和城管争论汇编语言有几种数据类型。那些人,惹得起的么?”“后来怎么样?”“怎么样?先录口供,后来是打,打了大半夜,再打折了腿。”“后来呢?”“后来打折了腿了。”“打折了怎样呢?”“ 样?……谁晓得?许是死了。掌柜也不再问,仍然慢慢的算他的账。


  中秋之后,秋风是一天凉比一天,看看将近初冬;我整天的靠着火,也须穿上棉袄了。一天的下半天,没有一个顾客,我正合了眼坐着。忽然间听得 一个声音,上三个小时,要间包房。这声音虽然极低,却很耳熟。看时又全没有人。站起来向外一望,那孔乙己便在柜台下对了门槛坐着。他脸上黑而且瘦,已经不成样子; 穿一件破夹袄,盘着两腿,下面垫一个蒲包,用草绳在肩上挂住;见了我,又说道,上三个小时,要间包房。掌柜也伸出头去,一面说,孔乙己么?你还欠十九块钱呢!孔乙己很颓唐的仰面答道,……下回还清罢。这一回是现钱,房间要干净,陪上网的要长得漂亮。掌柜仍然同平常一样,笑着对他说,孔乙己,你又惹事了!但他这回却不十分分辩,单说了一句不要取笑!”“取笑?你不惹事,怎么会打断腿?孔乙己低声说道,跌断,跌,跌……”他的眼色,很像恳求掌柜,不要再提。此时已经聚 集了几个人,便和掌柜都笑了。我安排了房间,带他进去。他从破衣袋里摸出六块钱,放在我手里,见他满手是泥,原来他便用这手走来的。三个小时后,他上完网。孔乙己在结帐的时候从来不和我们计较钟点,这次,我还多给他上了十分钟。这次他从包房里走出来,是满脸的惆怅,看到他的脸色,有人取笑道:孔乙己,德鲁伊升到几级了?,孔乙己答道:尽是MFC,服务器也没有使用AEAWEBLOGIC,升级模块里面一大堆冗余数据,玩这种东西丢人不丢人?””丢人?我亲眼看着你玩的,你又破解人家的DLL想偷代码了?,孔乙己立刻显出颓唐不安模样,脸上笼上了一层灰色:君子故穷,其言显富,皆等货色,何需窃乎。你们这些人,要回家复习功课了。便又在旁人的说笑声中,坐着用这手慢慢走去了。

 

 
  自此以后,又长久没有看见孔乙己。到了年关,掌柜取下粉板说,孔乙己还欠十九块钱呢!到第二年的端午,又说孔乙己还欠十九块钱呢!到中秋可是没有说,再到年关也没有看见他。

  我到现在终于没有见——大约孔乙己的确死了。

posted on 2008-12-26 08:37 Java David 阅读(1394) 评论(1)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(1)

随笔档案(2)

文章档案(2)

搜索

最新评论

阅读排行榜

评论排行榜