回忆孔先生

编程技术  /  houtizong 发布于 2年前   120

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


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


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


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

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


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

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

 

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

  //转载本文请注明来源:

  //http://www.cnblogs.com/kvspas/archive/2008/12/25/1361932.html

 

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);
        }

    }

}

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客