代码评审活动开始了,把你的C#代码贴出来,大伙评审一下。
--------------------编程问答-------------------- 坐等看代码。。。反正码农一个,种地靠天收。 --------------------编程问答-------------------- 砸一点都不热闹呢 ,等围观 --------------------编程问答-------------------- 耶,不是被404删除了吗,怎么又出来了吗?莫非宕机,恢复数据了? --------------------编程问答-------------------- 楼主,先贴你的代码出来让我等码农仰望啊--------------------编程问答-------------------- 码农一枚 不知道神马语言牛逼 只知道学一门能吃饭的手艺 坐等楼主贴代码 --------------------编程问答-------------------- 嘿,一个一个的都不敢贴出来了。
平时不是攘攘的很厉害吗? --------------------编程问答--------------------
. --------------------编程问答--------------------
吃鱼去头去尾---种田的命 --------------------编程问答-------------------- 同感,微软商业用作较浓,源代码不透明,不能过于依赖, --------------------编程问答--------------------
反正我写的很烂 --------------------编程问答-------------------- int i=0; --------------------编程问答-------------------- 请指导:
public string main(string[] args)
{
Console.Write("HelloWorld.");
} --------------------编程问答-------------------- 闲的蛋疼,所以就读完了你的帖子。
读完之后,真想抽你
1、微软的.net平台,2.0以后的版本都是在不停追加新组件和新特性,所以.net 2.0以后的版本不值得选择。
--2.0之后的确出了很多新的东西。但如果你只认为它们是一个个平凡的“组件”或者“特性”而已。那么我送你一句话“只见树木,不见森林”。说的就是你这种人
2、微软在技术方面并无任何建树,微软仅仅是一家为中小企业提易做图品的公司,所以其产品很大局限性。那些迷信微软,觉得微软多厉害的同学,需要清醒了。微软是造成中国码农悲惨命运的罪魁祸首。
---你自己读一下第一句话,什么逻辑?简直毫无逻辑可以言,不值得一驳。至于第二句话,那更不值得一勃了。
3、微软相比其它公司、组织的技术的区别是:别的技术,只是构建万基本平台和基本库之后就没事了,比如C++,C++语言基本和平台无关,C++标准库讨论了很多年才确定下来;Java,也只是一个平台,SUN公司规定了一些标准后就不管了,其它各种组织和公司根据SUN的标准,实现了各种JavaEE容器。 而微软呢,自己不仅仅实现基本平台,还自己开发组件。
这样造成的问题是,其它平台只选注基本平台就可以了,各种第三方库可以少用或者不用; 而微软呢,由于其官方自己出新库和组件,造成你要是不学新库和组件,好像你还没学完,你技术不行似的。
--与1类似,还是那句话。只见树木不见森林。
4、各种编程经验有限的同学,以及眼界狭隘的同学,你不管你自认为自己的技术多牛逼,你要认清一点,微软从来不是一家真正的科技公司,微软是一家商业公司。 你们不应该因为自己就会C# ,就开始护短,容不得别人说.net不好,说微软不好,你们应该做的是虚心听译一下过来的人的意见。
--科技公司也罢,商业公司也罢。这不是站队,男的在左边,女的在右边那么简单。后面一段不做评论。
5、什么叫做高级技术,高级编程,设计模式? 之所以他们高,意思就是掌握的人少,进一步意思就是用的地方也少。中国的这些易做图丝开发者普遍有一个个人英雄主义情绪,虽然我收入不高,公司很烂,但是只要我掌握了高级技术、设计模式,就能高人一等,就能有出头之日。
我告诉你,不见得,我认为,在你没能进入IBM,GOOGLE等牛逼公司之前,你是没资格谈什么高级技术和设计模式的。就好比你是一个租房吃地沟油的平民,你有资格去关心千里之外的一个小小易做图吗?你有资格去关心十八大谁当主席,美国打不打伊朗吗?
--弹的资格都没有么?这也说的太武断了。
基本技术都不牢靠的人,缺口口声声设计模式,你不嫌害臊吗?
--基本上同意,仅仅同意此句话而已。和上下文无关。
6、又有同学不服了,你凭什么这么说?你有多大本事?我还真没你们本事大,因为我已经从来不学微软的新技术了,我现在关注的是基础部分。
那个不服的高手,比如说那些什么wcf,wpf,wf,silverlight等新特性要求都会的哥们,比如说张口闭口设计模式,非把简单问题复杂化的哥们,比方说一个人当全才,什么都能做的哥们,你敢贴出你的基本代码让大家评审一下吗?
--楼主,等你出招啊? --------------------编程问答--------------------
孙子, Main写错了吧, 大写小呢.Main能返回String吗?
另外爷爷一般不用Console.WriteLine等, 爷爷一般用Console.Out.WriteLine, Console.Error.WriteLine,
在OS领域,三个重要的问文件描述符 0, 1, 2, 标准输出, 标准错误, 标准输入, 是如雷贯耳的概念.
如果你在命令后面 使用 1>out.txt 2>err.txt ,那标准输出和标准错误是会被写到不同的文件的
可惜微软这孙子, 经常搞封装, 经常故意回避基本基础的编程概念, 这不,又他妈的给标准输出起了一个间断的表示方法. --------------------编程问答-------------------- 坐等楼主贴神级代码。 --------------------编程问答-------------------- 楼主这种SB就四处易做图而已.
楼主最好的出路就是:让我重新射一次,让楼主重走一次易做图.以期来世做人.不在今世再做狗.四处易做图. --------------------编程问答-------------------- 楼主就一个培训班出来的货.楼上各位让它出招?这牲口除了会咬人外,还会有招?楼主这牲口只是狗狗学爬培训班出来的货,能出个毛招......只会易做图而已. --------------------编程问答-------------------- 楼主这种SB就四处易做图而已.
楼主最好的出路就是:让我重新射一次,让楼主从你妈那里重走一次易做图.以期来世做人.不在今世再做狗.四处易做图. --------------------编程问答-------------------- 我不觉得你用了一次linux就一定要鄙视一下用windows的用户才能显示出自己是高玩。如果你真觉得牛逼,把你windows盘下的《XX的先进性教育》片和系统卸载在说。 --------------------编程问答-------------------- 楼主懂个毛linux.这斯只是那些所谓培训班出来的SB而已,不过,在CSDN里装过了头......不知天高地厚的狗狗 而已....
--------------------编程问答-------------------- 期望楼主这狗狗的下一次易做图...最好装回易做图易做图,再走一次易做图,只是希望,这次脑袋别被易做图易做图夹了..别被护士弄坏了脑袋...... --------------------编程问答-------------------- SB楼主消失了?不回来装装还真对不起你那SB一样的脑袋.... --------------------编程问答--------------------
坐等楼主贴出 神一般 的代码. --------------------编程问答-------------------- 楼主的易做图丝情怀一览无遗啊~ --------------------编程问答-------------------- 就冲这种幼稚易做图的说法,你就不是一个真正搞开发的,而是一个被带坏了的小学生。 --------------------编程问答-------------------- 你知道2.0是什么时候发布的?
我们给写一个程序,都要每隔3个月甚至一个月就去给人家升级一次。你知道2.0什么发布的么?你凭什么不允许人家增加新组件、新特性?
我真的觉得这世界上没有一个精神正常的开发人员,会不知道自己是谁,从而以这种咆哮而开始砸场子。
就算想炒作,你也要低调一点开场啊。 --------------------编程问答-------------------- 这也就是现学现卖。
别人也许说微软是走下坡路了、二流商业公司了,但是跟你的出发点完全不同。 --------------------编程问答-------------------- 楼主你去黑csnd吧 说的这么惨 哎 哎 哎 --------------------编程问答-------------------- LZ要是感觉自己很牛B的话,贴出Code让偶等 c#码农们一睹你的风采 --------------------编程问答--------------------
就凭第一条,就不可能啊。
人不能进步,贴出的代码也跟人一样啊。 --------------------编程问答-------------------- 版主也太猛了吧 --------------------编程问答-------------------- 楼主要真有料,就说说.net哪些地方不好?为什么不好? --------------------编程问答-------------------- 谁真有本事假有本事还不好说呢? --------------------编程问答-------------------- csdn原来就是.net平台的,不也跑了很多年了,不用.net重新开发,想必应该是考虑的成本问题,.net都是要钱的,而php呢,免费。楼主的说法太偏激了! --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 膜拜一下楼主神贴。 --------------------编程问答-------------------- 这贴要火,不过贴错地方了! --------------------编程问答-------------------- --------------------编程问答-------------------- 炒作吗?贴易做图你火的更快... --------------------编程问答-------------------- 引用 楼主 linustd 的回复:
各位C#的难兄难弟,
有谁关注CSDN的新闻的朋友,可能见过本人的留言。
本人在此再重申一下个人观点:
1、微软的.net平台,2.0以后的版本都是在不停追加新组件和新特性,所以.net 2.0以后的版本不值得选择。哥们 见识好浅哦
2、微软在技术方面并无任何建树,微软仅仅是一家为中小企业提易做图品的公司,所以其产品很大局限性。那些迷信微软,觉得微软多厉害的同学,需要清醒了。微软是造成中国码农悲惨命运的罪魁祸首。
严重对你无语了,你说的事情是中国这个特殊的情况, 因为国内都用盗版谁用正版, 你去看看国外。 SCCM 听过吗,空客 澳大利亚众议院都买这个产品,不知道就不要乱说好吧
3、微软相比其它公司、组织的技术的区别是:别的技术,只是构建万基本平台和基本库之后就没事了,比如C++,C++语言基本和平台无关,C++标准库讨论了很多年才确定下来;Java,也只是一个平台,SUN公司规定了一些标准后就不管了,其它各种组织和公司根据SUN的标准,实现了各种JavaEE容器。 而微软呢,自己不仅仅实现基本平台,还自己开发组件。
开源真的很好吗?
这样造成的问题是,其它平台只选注基本平台就可以了,各种第三方库可以少用或者不用; 而微软呢,由于其官方自己出新库和组件,造成你要是不学新库和组件,好像你还没学完,你技术不行似的。
自己不去理解底层的东西,拿来主义典型例子。不忘底层研究还怪人家
4、各种编程经验有限的同学,以及眼界狭隘的同学,你不管你自认为自己的技术多牛逼,你要认清一点,微软从来不是一家真正的科技公司,微软是一家商业公司。 你们不应该因为自己就会C# ,就开始护短,容不得别人说.net不好,说微软不好,你们应该做的是虚心听译一下过来的人的意见。
公司追去的是产品的质量,不同的需求用不同的技术 存在既合理
5、什么叫做高级技术,高级编程,设计模式? 之所以他们高,意思就是掌握的人少,进一步意思就是用的地方也少。中国的这些易做图丝开发者普遍有一个个人英雄主义情绪,虽然我收入不高,公司很烂,但是只要我掌握了高级技术、设计模式,就能高人一等,就能有出头之日。
程序员到架构师 这个是个很漫长的路 设计模式也是一个很大的坎
我告诉你,不见得,我认为,在你没能进入IBM,GOOGLE等牛逼公司之前,你是没资格谈什么高级技术和设计模式的。就好比你是一个租房吃地沟油的平民,你有资格去关心千里之外的一个小小易做图吗?你有资格去关心十八大谁当主席,美国打不打伊朗吗?
基本技术都不牢靠的人,缺口口声声设计模式,你不嫌害臊吗?
6、又有同学不服了,你凭什么这么说?你有多大本事?我还真没你们本事大,因为我已经从来不学微软的新技术了,我现在关注的是基础部分。
那个不服的高手,比如说那些什么wcf,wpf,wf,silverlight等新特性要求都会的哥们,比如说张口闭口设计模式,非把简单问题复杂化的哥们,比方说一个人当全才,什么都能做的哥们,你敢贴出你的基本代码让大家评审一下吗? --------------------编程问答-------------------- 围观大神节操
--------------------编程问答-------------------- 除 --------------------编程问答-------------------- 请楼主贴出基础部分代码,我等码农学习参考一下!!!! --------------------编程问答--------------------
Main能返回String吗? 没用过就不要说不能! --------------------编程问答-------------------- 围观不知天高地厚的楼主~ --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 据说有人要做代码评审(code review)?好呀好呀
请给鄙人的代码评审一下吧,欢迎您多提宝贵意见!
http://blog.csdn.net/yapingxin/article/details/8018057 --------------------编程问答-------------------- 代码贴出来:
--------------------编程问答-------------------- 一次还贴不完。接着贴:
// -----------------------------------------------------------------------
// <copyright file="UInt64MaskHelper.cs" author="Yaping Xin">
//
//
// File Name : UInt64MaskHelper.cs
// Description : Helper class to support UInt64 bit mask.
// Project Title : UInt64MaskHelper
// Author(s) : Yaping Xin
// Code Review Done :
// Modification History: (1) Created at Aug 10, 2012
// : (2) Add static function bool[] GetBits(ulong value)
// : at Sep 25, 2012
// </copyright>
// -----------------------------------------------------------------------
namespace BitsHelper
{
using System;
using System.Globalization;
/// <summary>
/// Helper class to support UInt64 bit mask.
/// </summary>
public static class UInt64MaskHelper
{
#region Constant definition
/// <summary>
/// Constant definition of max avaiable bytes length.
/// </summary>
public const int MaxBytesLength = 8;
/// <summary>
/// Constant definition bits count within a byte
/// </summary>
public const int ByteBitsCount = 8;
#endregion Constant definition
#region Useful Bytes/Bits static readonly array definition
/// <summary>
/// Array of UInt64 byte mask values.
/// </summary>
private static readonly ulong[] U64ByteMaskValues = new ulong[]
{
0x00000000000000FF,
0x000000000000FF00,
0x0000000000FF0000,
0x00000000FF000000,
0x000000FF00000000,
0x0000FF0000000000,
0x00FF000000000000,
0xFF00000000000000
};
/// <summary>
/// Array of max values storaged in different amount of bytes within UInt64 scope.
/// </summary>
private static readonly ulong[] U64BytesMaxValues = new ulong[]
{
0x00000000000000FF,
0x000000000000FFFF,
0x0000000000FFFFFF,
0x00000000FFFFFFFF,
0x000000FFFFFFFFFF,
0x0000FFFFFFFFFFFF,
0x00FFFFFFFFFFFFFF,
0xFFFFFFFFFFFFFFFF
};
/// <summary>
/// Array of shift values to specific byte lowest bit position.
/// </summary>
private static readonly byte[] BytePositionShiftValues = new byte[]
{
0, 8, 16, 24, 32, 40, 48, 56
};
/// <summary>
/// Array of byte bit mask values.
/// </summary>
private static readonly byte[] ByteBitMaskValues = new byte[]
{
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80
};
/// <summary>
/// Array of byte bit mask values.
/// </summary>
private static readonly byte[] ByteBitOffMaskValues = new byte[]
{
0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F
};
#endregion Useful Bytes/Bits static readonly array definition
#region Enumeration definition
/// <summary>
/// Enumeration definition of the error code
/// </summary>
public enum ErrorCode : uint
{
/// <summary>No error occurs</summary>
OK = 0,
/// <summary>Argument is Null</summary>
ArgumentIsNull = 1,
/// <summary>Argument is out of range</summary>
ArgumentOutOfRange = 2,
}
#endregion Enumeration definition
#region Encoding methods (numeric value to bytes/bits)
/// <summary>
/// Gets the bytes array to storage the specific UInt64 value.
/// Notes: the returned array contains MaxBytesLength items.
/// </summary>
/// <param name="value">The specific UInt64 value.</param>
/// <returns>The bytes array which contains MaxBytesLength items.</returns>
public static byte[] GetBytes(ulong value)
{
byte[] result = new byte[MaxBytesLength];
ulong maskResult = value & U64ByteMaskValues[0];
result[0] = (byte)maskResult;
for (int i = 1; i < MaxBytesLength; i++)
{
maskResult = value & U64ByteMaskValues[i];
result[i] = (byte)(maskResult >> BytePositionShiftValues[i]);
}
return result;
}
/// <summary>
/// Gets the bits array to storage the specific UInt64 value.
/// Notes: the returned array contains MaxBytesLength * ByteBitsCount items.
/// </summary>
/// <param name="value">The specific UInt64 value.</param>
/// <returns>The bits array which contains MaxBytesLength * ByteBitsCount items.</returns>
public static bool[] GetBits(ulong value)
{
bool[] bits = new bool[MaxBytesLength * ByteBitsCount];
byte[] bytes = UInt64MaskHelper.GetBytes(value);
byte byteValue;
byte bitValue;
byte mask;
int i = 0;
for (int indexBytes = 0; indexBytes < bytes.Length; indexBytes++)
{
for (byte bitPosition = 0; bitPosition < ByteBitsCount; bitPosition++)
{
byteValue = bytes[indexBytes];
if (bitPosition == 0)
{
bitValue = (byte)(byteValue & ByteBitMaskValues[0]);
}
else
{
mask = (byte)(byteValue & ByteBitMaskValues[bitPosition]);
bitValue = mask >>= bitPosition;
}
bits[i] = bitValue == 1;
i++;
}
}
return bits;
}
--------------------编程问答-------------------- 呵呵,我现在做的事情大致是这样的
/// <summary>
/// Gets the byte at specific position from the UInt64 value.
/// Notes: this function will not return detailed error code while error occurs.
/// </summary>
/// <param name="value">The UInt64 value.</param>
/// <param name="bytePosition">The byte position.</param>
/// <param name="result">The byte to get.</param>
/// <returns>
/// <c>true</c> indicates no error occurs during calculating;
/// <c>fasle</c> indicates error occurs.
/// </returns>
public static bool GetByte(ulong value, int bytePosition, out byte result)
{
ErrorCode errorCode;
return UInt64MaskHelper.GetByte(value, bytePosition, out result, out errorCode);
}
/// <summary>
/// Gets the byte at specific position from the UInt64 value.
/// </summary>
/// <param name="value">The UInt64 value.</param>
/// <param name="bytePosition">The byte position.</param>
/// <param name="result">The byte to get.</param>
/// <param name="errorCode">The error code.
/// Will be set to ErrorCode.OK if no error occurs.</param>
/// <returns>
/// <c>true</c> indicates no error occurs during calculating;
/// <c>fasle</c> indicates error occurs, and detailed error is wrote in errorCode output parameter.
/// </returns>
public static bool GetByte(
ulong value,
int bytePosition,
out byte result,
out ErrorCode errorCode)
{
if (bytePosition < 0 || bytePosition >= MaxBytesLength)
{
result = 0;
errorCode = ErrorCode.ArgumentOutOfRange;
return false;
}
ulong maskResult;
if (bytePosition == 0)
{
maskResult = value & U64ByteMaskValues[0];
goto EXIT_PASS;
}
maskResult = value & U64ByteMaskValues[bytePosition];
maskResult >>= BytePositionShiftValues[bytePosition];
EXIT_PASS:
result = (byte)maskResult;
errorCode = ErrorCode.OK;
return true;
}
/// <summary>
/// Gets the bit at specific position from the byte value.
/// Notes: this function will not return detailed error code while error occurs.
/// </summary>
/// <param name="value">The byte value.</param>
/// <param name="bitPosition">The bit position.</param>
/// <param name="result">The bit (0 or 1) to get.</param>
/// <returns>
/// <c>true</c> indicates no error occurs during calculating;
/// <c>fasle</c> indicates error occurs.
/// </returns>
public static bool GetBit(byte value, int bitPosition, out byte result)
{
ErrorCode errorCode;
return UInt64MaskHelper.GetBit(value, bitPosition, out result, out errorCode);
}
/// <summary>
/// Gets the bit at specific position from the byte value.
/// </summary>
/// <param name="value">The byte value.</param>
/// <param name="bitPosition">The bit position.</param>
/// <param name="result">The bit (0 or 1) to get.</param>
/// <param name="errorCode">The error code.
/// Will be set to ErrorCode.OK if no error occurs.</param>
/// <returns>
/// <c>true</c> indicates no error occurs during calculating;
/// <c>fasle</c> indicates error occurs, and detailed error is wrote in errorCode output parameter.
/// </returns>
public static bool GetBit(
byte value,
int bitPosition,
out byte result,
out ErrorCode errorCode)
{
if (bitPosition < 0 || bitPosition >= ByteBitsCount)
{
result = 0;
errorCode = ErrorCode.ArgumentOutOfRange;
return false;
}
if (bitPosition == 0)
{
result = (byte)(value & ByteBitMaskValues[0]);
errorCode = ErrorCode.OK;
return true;
}
byte maskResult = (byte)(value & ByteBitMaskValues[bitPosition]);
result = maskResult >>= bitPosition;
errorCode = ErrorCode.OK;
return true;
}
#endregion Encoding methods (numeric value to bytes/bits)
#region Decoding methods (bytes/bits to numeric value)
/// <summary>
/// Gets the UInt64 value from bytes array.
/// Notes: this function will not return detailed error code while error occurs.
/// </summary>
/// <param name="bytes">The bytes array.</param>
/// <param name="value">The UInt64 value.</param>
/// <returns>
/// <c>true</c> indicates no error occurs during calculating;
/// <c>fasle</c> indicates error occurs.
/// </returns>
public static bool GetUInt64(byte[] bytes, out ulong value)
{
ErrorCode errorCode;
return UInt64MaskHelper.GetUInt64(bytes, out value, out errorCode);
}
/// <summary>
/// Gets the UInt64 value from bytes array.
/// </summary>
/// <param name="bytes">The bytes array.</param>
/// <param name="value">The UInt64 value.</param>
/// <param name="errorCode">The error code.
/// Will be set to ErrorCode.OK if no error occurs.</param>
/// <returns>
/// <c>true</c> indicates no error occurs during calculating;
/// <c>fasle</c> indicates error occurs, and detailed error is wrote in errorCode output parameter.
/// </returns>
public static bool GetUInt64(byte[] bytes, out ulong value, out ErrorCode errorCode)
{
if (bytes == null || bytes.Length == 0)
{
errorCode = ErrorCode.ArgumentIsNull;
value = 0;
return false;
}
if (bytes.Length > MaxBytesLength)
{
errorCode = ErrorCode.ArgumentOutOfRange;
value = 0;
return false;
}
ulong result = bytes[0];
ulong byteValue;
if (bytes.Length > 1)
{
for (int i = 1; i < bytes.Length; i++)
{
byteValue = bytes[i];
byteValue <<= BytePositionShiftValues[i];
result += byteValue;
}
}
value = result;
errorCode = ErrorCode.OK;
return true;
}
using Common;
using MongoDB.Bson;
using MongoDB.Bson.Serialization;
using MongoDB.Driver;
using System;
using System.Dynamic;
using System.Linq;
namespace EmergencyTasks.BLL
{
[CommunicationCommand(typeof(EmergencyTasks.Commands.QueryCustomerGroupedDatas))]
class QueryCustomerGroupedDatas : CommandV3<EmergencyTasks.Commands.QueryCustomerGroupedDatas, ExpandoObject[]>
{
public override ExpandoObject[] Execute(string passport)
{
var bag = EmergencyTasksExtensions.Mongo(this.Session.EnpterpriceName).GetCollection<MongoDB.Bson.BsonDocument>("Task");
var qrs = new QueryDocument();
if (this.Command.BaselineTypeName != null && this.Command.BaselineTypeName != string.Empty)
qrs.Add("TypeName", this.Command.BaselineTypeName);
if (this.Command.QueryCondition != null)
{
foreach (var dm in BsonDocument.Parse(this.Command.QueryCondition))
qrs.Add(new BsonElement("CustomerDocument." + dm.Name, dm.Value));
}
var query = from x in bag.Find(qrs)
where x.Contains("CustomerDocument") && !x["CustomerDocument"].IsBsonNull
let r = x["CustomerDocument"].AsBsonDocument
where r.Contains(this.Command.GroupBy)
where !r[this.Command.GroupBy].IsBsonNull
let gvalue = r[this.Command.GroupBy].AsString
group r by gvalue into gr
select (from y in gr
orderby Convert.ToDouble(y[this.Command.OrderBy]) descending
select y).FirstOrDefault();
var result = (from r in query
let robj = Cut(r, this.Command.FieldsReturnValue)
let obj = BsonSerializer.Deserialize<ExpandoObject>(robj)
select obj).ToArray();
return result;
}
private BsonDocument Cut(BsonDocument input, string[] fields)
{
(from em in input.Elements
where !fields.Contains(em.Name)
select em.Name)
.ToList()
.ForEach(nm => input.Remove(nm));
return input;
}
}
}
话说回来,看了楼主的论点一,我就哇哇吐了。那种论调对.net绝对是疯狂的挖墙脚烂招啊! --------------------编程问答-------------------- 前端设计和研发是产品秘密,顶多能给lz看看(我自己一个人写的某一个产品)几十万行服务器端代码里的几行。 --------------------编程问答-------------------- 码农一枚,观望来了.. --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 看了一下,LZ确实是没资格谈什么设计模式。
补充:.NET技术 , 分析与设计