关于中文编程的段子的一个实现

   网上这几天正在疯传一段用C#进行中文编程的段子,说一个程序员就职后,发现公司的大哥里把C#用中文进行了包装,不光是类,还有关键字也进行了中文化,正在苦恼是不是要继续在这个公司干下去。

   这位大哥这种精神是否可嘉还真不好评价。对于没有意义的事情执着追求,是可嘉呢还是不可嘉,估计还是要看评论的人是谁。不过,人家自己的执着,别人也确实无资格评价。

   还有所谓“意义”,恐怕也是因人而定义的。一个东西,对于为之付出了精力的人来说是有意义的,而对于其他人来说,即然与之没有交集,也就无资格置评。对于文中的小哥来说,喜欢的就留下搞搞明白,不喜欢的就走人吧。

 

    只是这段中文化的代码,很有意思,上午试着用C#的lamda实现了一下,就所看到的代码而言,基本算是都实现了,现在我也可以用中文编程了。

  

下面是中文编程的示例,基本与网上那个段子差不多。 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 中文编程
{
     class Program
    {
         static  void Main( string[] args)
        {
             //  逻辑判断演示....
            判断.如果是(判断.真).则(() =>
            {
                Console.WriteLine( " ");
            }).否则(() => 
            {
                Console.WriteLine( " ");
            });
             //  遍历器演示.....
            登陆信息[] 所有登录信息 =  new 登陆信息[ 100];
             //  ....

            遍历器.计数遍历().从( 0).到( 99).每隔( 1).执行((当前索引行) =>
            {
                所有登录信息[当前索引行] =  new 登陆信息() { 姓名 =  " 姓名  " + 当前索引行.ToString() };
            });

            遍历器.枚举遍历<登陆信息>(所有登录信息).从( 0).到( 99).每隔( 3).执行((当前索引行, 登录信息项) =>
            {
                Console.WriteLine(登录信息项);
            });

            数据库连接类 数据连接对象 =  null;
             // 异常处理........
            异常.对下列语句进行异常检测(() =>
            {
                数据连接对象 = 数据库连接类.连接到( " 10.1.138.35 ").用户名为( " xxx ").密码为( " xxx ");
                数据连接对象.打开连接();
               
                 // ... 
                 throw  new Exception( " 测试异常 ");


            })
            .发现异常则((异常对象) =>
            {
                 // ... 
                Console.WriteLine(异常对象);
            })
            .最终执行(() => {
                 //  ...
                数据连接对象.关闭连接();

            });
        }
    }

     public  class 登陆信息
    {
         public  string 姓名;
         public  override  string ToString()
        {
             return  " 姓名 " + 姓名;
        }
    }
}

 

关键字的包装:-----------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 中文编程
{
     public  class 判断
    {
         public  const  bool 真 =  true;
         public  const  bool 假 =  false;

         bool _b;

         public  static 判断 如果是( bool 条件)
        {
             return  new 判断(){_b = 条件};
        }

         public 判断 则(Action act)
        {
             if (_b)
            {
                act();
            }
             return  this;
        }

         public 判断 否则(Action act)
        {
             if (!_b)
            {
                act();
            }
             return  this;
        }
    }

     public  class 遍历器
    {
         public  static 枚举遍历器<T> 枚举遍历<T>(IEnumerable<T> 枚举集合)
        {
             return  new 枚举遍历器<T>(枚举集合);
        }

         public  static 计数遍历器 计数遍历()
        {
             return  new 计数遍历器() { };
        }
    }

     public  class 枚举遍历器<T>
    {
         protected IEnumerable<T> _set;
         protected  int _iStartIndex;
         protected  int _iEndIndex;
         protected  int _Step;

         public 枚举遍历器(IEnumerable<T> 枚举集合)
        {
             this._set = 枚举集合;
        }

         public 枚举遍历器<T> 从( int 开始元素序号)
        {
             this._iStartIndex = 开始元素序号;
             return  this;
        }

         public 枚举遍历器<T> 到( int 结束元素序号)
        {
             this._iEndIndex = 结束元素序号;
             return  this;
        }

         public 枚举遍历器<T> 每隔( int 每隔步长)
        {
             this._Step = 每隔步长;
             return  this;
        }

         public  void 执行(Action< int, T> 循环体方法)
        {
             int i =  0;
             foreach ( var e  in _set)
            {
                 if (i >=  this._iStartIndex && i <=  this._iEndIndex)
                {
                     if ((i -  this._iStartIndex) %  this._Step ==  0)
                    {
                        循环体方法(i, e);
                    }
                }
                i++;

            }
        }
    }

    
     public  class 计数遍历器
    {
         protected  int _iStartIndex;
         protected  int _iEndIndex;
         protected  int _Step;
    
         public 计数遍历器 从( int 开始元素序号)
        {
             this._iStartIndex = 开始元素序号;
             return  this;
        }

         public 计数遍历器 到( int 结束元素序号)
        {
             this._iEndIndex = 结束元素序号;
             return  this;
        }

         public 计数遍历器 每隔( int 每隔步长)
        {
             this._Step = 每隔步长;
             return  this;
        }

         public  void 执行(Action< int> 循环体方法)
        {
             for ( int i =  this._iStartIndex; i <=  this._iEndIndex; i +=  this._Step)
            {
                循环体方法(i);
            }
        }
    }

     public  class 异常
    {
        Exception _ex =  null;

         public  static 异常 对下列语句进行异常检测(Action 正常执行程序)
        {
             try
            {
                正常执行程序();
                 return  new 异常() { _ex =  null};
            }
             catch (Exception ex)
            {
                 return  new 异常() { _ex = ex};
            }
            
        }

         public 异常 发现异常则(Action<Exception> 异常处理程序)
        {
             if ( this._ex !=  null)
            {
                异常处理程序( this._ex);
            }
             return  this;
        }

         public 异常 最终执行(Action 最终处理程序)
        {
            最终处理程序();
             return  this;
        }
    }
}

 

数据库连接的包装: 

 

using System;

 

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace 中文编程
{
     public  class 数据库连接类
    {
         private  string _sServer;
         private  string _sUID;
         private  string _sPassword;
         private  string _sDBName;
        SqlConnection _sqlconn =  null;

         public  static 数据库连接类 连接到( string 服务器名)
        {
             return  new 数据库连接类() { _sServer = 服务器名 };
        }

         public 数据库连接类 用户名为( string 用户名)
        {
            _sUID = 用户名;
             return  this;
        }

         public 数据库连接类 密码为( string 密码)
        {
            _sPassword = 密码;
             return  this;
        }

         public 数据库连接类 数据库为( string 数据库名)
        {
            _sDBName = 数据库名;
             return  this;
        }

         public  void 打开连接()
        {
             this._sqlconn =  new SqlConnection( string.Format( " Data Source={0};Initial Catalog={1};User ID={2};Password={3} "this._sServer,  this._sDBName,  this._sUID,  this._sPassword));
             this._sqlconn.Open();
        }

         public  void 关闭连接()
        {
             this._sqlconn.Close();
        }

    }
}

 

说实话,感觉很奇怪。

 

你可能感兴趣的:(编程)