散分:用三日写了几百行代码,却被指思路有问题,结构不合理! 如题,小弟郁闷中,是不是我不适合做这个呀,写代码有那么难吗?今天干脆休息!请高人指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先,你要明白,三日写几百行代码本来就不是重活,记得以前一下午还写了几百行的存储过程、触发器等,所以你并不要期望太高。我们刚开始写大量的代码时,思路肯定不会提前设计好,往往写到最后,编程思路跟着代码走,这,这种情况很多,关键你写之前,多看看MVC、设计模式、架构之类的文章,会有所帮助 也是这么过来的.几百行代码?如果只是业务的话,可能还行,但是如果是一个方法或一个功能,一听的话就不想看.怎么说呢?老大们总觉得,分下去的活,是简单的,那难得呢?据经验来看,难得一般他都会主动找你商量,比如基盘开发.厉害的首先从整体性能来考虑;一般的话,第一反应会想用什么方法来实现,这就是区别.面向对象的话,常用的方法别人都会作好的了,直接调用就行,比如说upload,download,封装的方法太多了,没有必要从 协议,byte 开始构想设计,简单来说,一行代码搞定,可以44。如果你的几百行代码是重复牛人的工作的话,那你的思路肯定没有牛人厉害,不知理解对否。这玩艺儿急不得,慢慢来积累 代码来了namespace Score.Forms{ public partial class dlgGrade: Form { private GradeOperate oGrades = new GradeOperate(); ChangeStatus csChang = new ChangeStatus(); public dlgGrade() { InitializeComponent(); } private void dlgGrade_Load(object sender, EventArgs e) { btnOK.Visible = false; oGrades.InitGrade(); ShowToCmb(); RefreshItem(); lvwGrade.Focus(); lvwGrade.SelectedIndices.Clear(); lvwGrade.SelectedIndices.Add(0); } private void lvwGrade_SelectedIndexChanged(object sender, EventArgs e) { if (lvwGrade.SelectedItems.Count > 0) { foreach (ListViewItem AItem in lvwGrade.SelectedItems) { int i = Convert.ToInt32(AItem.Text) - 1; txtNumber.Text = oGrades.Grades[i].Code.ToString(); txtGradeName.Text = oGrades.Grades[i].Name; txtGrade.Text = oGrades.Grades[i].Grade.ToString(); cmbMaster.Text = FindTeacherByCode(oGrades.Grades[i].Master); cmbMaster.SelectedIndex = 0; cmbOldGrade.Text = FindOldGradeByCode(oGrades.Grades[i].OldGrade); cmbOldGrade.SelectedIndex = 0; cmbGradeType.Text=FindGradeTypeByCode(oGrades.Grades[i].GradeType); cmbGradeType.SelectedIndex = 0; txtAmount.Text = oGrades.Grades[i].Amount.ToString(); if (oGrades.Grades[i].Graduate == true) ckbGradeuate.Checked = true; else ckbGradeuate.Checked = false; } } else { txtNumber.Text = ""; txtGradeName.Text = ""; txtGrade.Text = ""; cmbMaster.Text = ""; cmbOldGrade.Text = ""; cmbGradeType.Text = ""; txtAmount.Text = ""; ckbGradeuate.Checked = false; } } private void ShowButton() { btnNew.Visible = !csChang.Changing; btnDelete.Visible = !csChang.Changing; btnEdit.Visible = !csChang.Changing; btnOK.Visible = csChang.Changing; } private void btnNew_Click(object sender, EventArgs e) { csChang.Newing = true; ShowButton(); txtNumber.Text = Convert.ToString(lvwGrade.Items.Count + 1); txtGradeName.Text = ""; txtGradeName.Focus(); //ShowToCmb(); txtAmount.Text = "0"; ckbGradeuate.Checked = false; } private void btnEdit_Click(object sender, EventArgs e) { csChang.Editting = true; ShowButton(); //ShowToCmb(); } private void btnDelete_Click(object sender, EventArgs e) { DialogResult dr; dr = MessageBox.Show("确定要删除年级:" + txtGradeName.Text, "设置年级信息", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2); if (dr == DialogResult.Yes) { oGrades.DeleteGrade((int)lvwGrade.Items[lvwGrade.SelectedIndices[0]].SubItems[1].Tag); RefreshItem(); } } private void btnOK_Click(object sender, EventArgs e) { //插入或修改时,点击确定 if (csChang.Newing) { int Master=0,OldGradeType=0,GradeType=0,Gradeuate=0; foreach (TeacherObject ATeacher in ScrCommon.gTeachers.Teachers) { if (ATeacher.Name == cmbMaster.SelectedItem.ToString()) Master = ATeacher.Code; } foreach(GradeObject AGrade_n in oGrades.Grades) { if(AGrade_n.Name==cmbOldGrade.SelectedItem.ToString()) OldGradeType=AGrade_n.Code; } foreach(GradeTypeObject AGradeType in ScrCommon.gGradeTypes.GradeTypes) { if(AGradeType.Name==cmbGradeType.SelectedItem.ToString()) GradeType=AGradeType.Code; } if (ckbGradeuate.Checked == true) Gradeuate = 1; else Gradeuate = 0; GradeObject AGrade = new GradeObject(0, txtGradeName.Text, Master,Convert.ToInt32(txtGrade.Text), OldGradeType, GradeType, Convert.ToInt32(txtAmount.Text), DateTime.Today,Gradeuate); oGrades.AddGrade(AGrade); csChang.Clear(); RefreshItem(lvwGrade.Items.Count); ShowButton(); } else if (csChang.Editting) { int i = lvwGrade.SelectedIndices[0]; if (!csChang.Changed) { GradeObject AGrade = new GradeObject(oGrades.Grades[i]); AGrade.Name = txtGradeName.Text; foreach (TeacherObject ATeacher in ScrCommon.gTeachers.Teachers) { if (ATeacher.Name == cmbMaster.SelectedItem.ToString()) AGrade.Master = ATeacher.Code; } AGrade.Grade = Convert.ToInt32(txtGrade.Text); foreach (GradeObject AGrade_n in oGrades.Grades) { if (AGrade_n.Name == cmbOldGrade.SelectedItem.ToString()) AGrade.OldGrade = AGrade_n.Code; } foreach (GradeTypeObject AGradeType in ScrCommon.gGradeTypes.GradeTypes) { if (AGradeType.Name == cmbGradeType.SelectedItem.ToString()) AGrade.GradeType = AGradeType.Code; } AGrade.Amount = Convert.ToInt32(txtAmount.Text); if (ckbGradeuate.Checked == true) AGrade.Graduate= true; else AGrade.Graduate = false; oGrades.UpdateGrade(AGrade); } csChang.Clear(); RefreshItem(); ShowButton(); } else RefreshItem(); } private void RefreshItem() { int i = 0; if (lvwGrade.SelectedIndices.Count > 0) i = lvwGrade.SelectedIndices[0]; RefreshItem(i); } private void RefreshItem(int ItemSelected) { int i = 1; lvwGrade.Items.Clear(); foreach (GradeObject AGrade in oGrades.Grades) { if (AGrade == null) return; ListViewItem AItem = new ListViewItem(Convert.ToString(i)); lvwGrade.Items.Add(AItem); lvwGrade.Items[i - 1].SubItems.Add(AGrade.Name); lvwGrade.Items[i - 1].SubItems[1].Tag = AGrade.Code; lvwGrade.Items[i - 1].SubItems.Add(FindTeacherByCode(AGrade.Master)); lvwGrade.Items[i - 1].SubItems.Add(FindGradeTypeByCode(AGrade.GradeType)); ++i; } SetItemSelected(ItemSelected); } private void SetItemSelected(int ItemSelected) { lvwGrade.Focus(); lvwGrade.SelectedIndices.Clear(); if (ItemSelected >= lvwGrade.Items.Count) ItemSelected = lvwGrade.Items.Count - 1; lvwGrade.SelectedIndices.Add(ItemSelected); } private Boolean CheckValid(ClassObject AClass) { if (AClass.Name.Trim().Length == 0) { MessageBox.Show("年级名称不能为空", "设置年级信息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return false; } return true; } private string FindTeacherByCode(int Code) { string s = ""; foreach (TeacherObject ATeacher in ScrCommon.gTeachers.Teachers) { if (Code== ATeacher.Code) s = ATeacher.Name; break; } return s; } private string FindOldGradeByCode(int Code) { string s = ""; foreach (GradeObject AGrade in oGrades.Grades) { if (Code == AGrade.Code) s = AGrade.Name; break; } return s; } private string FindGradeTypeByCode(int Code) { string s = ""; foreach (GradeTypeObject AGradeType in ScrCommon.gGradeTypes.GradeTypes) { if (Code == AGradeType.Code) s = AGradeType.Name; break; } return s; } private void ShowToCmb() { //显示年级教师到cmbMaster中 cmbMaster.Items.Clear(); foreach (TeacherObject ATeacher in ScrCommon.gTeachers.Teachers) { cmbMaster.Items.Add(ATeacher.Name); } cmbMaster.SelectedIndex = -1; //显示班级特征到cmbOldGrade中 cmbOldGrade.Items.Clear(); foreach (GradeObject AGrade in oGrades.Grades) { cmbOldGrade.Items.Add( AGrade.Name); } cmbOldGrade.SelectedIndex = -1; //显示年级类型到cmbGradeType中 cmbGradeType.Items.Clear(); foreach (GradeTypeObject AGradeType in ScrCommon.gGradeTypes.GradeTypes) { cmbGradeType.Items.Add(AGradeType.Name); } cmbGradeType.SelectedIndex = -1; } }}代码来了 完了,LZ,怎么我和说你那人一样的看法捏,....大家轻点BT,说下我看了你代码的问题,结构明显的不合理,重复代码多,有些明显应该函数化,比如,dlgGrade_Load里面,你完全可以一个Init()函数搞定的,还有说你思路不对的地方,比如,lvwGrade.Items[i - 1].SubItems.Add(AGrade.Name); lvwGrade.Items[i - 1].SubItems.Add(FindTeacherByCode(AGrade.Master)); lvwGrade.Items[i - 1].SubItems.Add(FindGradeTypeByCode(AGrade.GradeType)); 我汗,前面2句被冲掉,那写了干什么.之后的,额,实在长得看不下去了,还是要多努力的,一起加油吧. 还好吧,把LZ的代码弄下来整理一下,不是那么差的就是if-else里还嵌套很多的foreach,这个。。这个。。看起来有些乱了。。至于那个Add,不会冲掉前面的,是给lvwGrade.Items[i - 1]添加了3个subitem而已就是太长了,没啥注释看的有些头晕~~~ 虚心 虚心 再虚心DAY DAY UP! 急急急啊!winform打包问题。在线等。 C#高级编程这本书怎么样? 我要如何找到这个地址 C#接口聚合问题 制作连续位图?? c#中多个不同struct的成员的快速赋值 再问?arraylise 客户端程序连接数据库超时问题 关于remoting的租约问题 如何在.net的安装程序自定义全屏安装背景 如何减少if...else的数量? 看看这道题
几百行代码?如果只是业务的话,可能还行,但是如果是一个方法或一个功能,一听的话就不想看.怎么说呢?
老大们总觉得,分下去的活,是简单的,那难得呢?据经验来看,难得一般他都会主动找你商量,比如基盘开发.
厉害的首先从整体性能来考虑;一般的话,第一反应会想用什么方法来实现,这就是区别.
面向对象的话,常用的方法别人都会作好的了,直接调用就行,比如说upload,download,封装的方法太多了,
没有必要从 协议,byte 开始构想设计,简单来说,一行代码搞定,可以44。
如果你的几百行代码是重复牛人的工作的话,那你的思路肯定没有牛人厉害,不知理解对否。
这玩艺儿急不得,慢慢来积累
public partial class dlgGrade: Form
{
private GradeOperate oGrades = new GradeOperate();
ChangeStatus csChang = new ChangeStatus();
public dlgGrade()
{
InitializeComponent();
}
private void dlgGrade_Load(object sender, EventArgs e)
{
btnOK.Visible = false;
oGrades.InitGrade();
ShowToCmb();
RefreshItem();
lvwGrade.Focus();
lvwGrade.SelectedIndices.Clear();
lvwGrade.SelectedIndices.Add(0);
}
private void lvwGrade_SelectedIndexChanged(object sender, EventArgs e)
{
if (lvwGrade.SelectedItems.Count > 0)
{
foreach (ListViewItem AItem in lvwGrade.SelectedItems)
{
int i = Convert.ToInt32(AItem.Text) - 1;
txtNumber.Text = oGrades.Grades[i].Code.ToString();
txtGradeName.Text = oGrades.Grades[i].Name;
txtGrade.Text = oGrades.Grades[i].Grade.ToString();
cmbMaster.Text = FindTeacherByCode(oGrades.Grades[i].Master);
cmbMaster.SelectedIndex = 0;
cmbOldGrade.Text = FindOldGradeByCode(oGrades.Grades[i].OldGrade);
cmbOldGrade.SelectedIndex = 0;
cmbGradeType.Text=FindGradeTypeByCode(oGrades.Grades[i].GradeType);
cmbGradeType.SelectedIndex = 0;
txtAmount.Text = oGrades.Grades[i].Amount.ToString();
if (oGrades.Grades[i].Graduate == true) ckbGradeuate.Checked = true;
else ckbGradeuate.Checked = false;
}
}
else
{ txtNumber.Text = "";
txtGradeName.Text = "";
txtGrade.Text = "";
cmbMaster.Text = "";
cmbOldGrade.Text = "";
cmbGradeType.Text = "";
txtAmount.Text = "";
ckbGradeuate.Checked = false;
}
}
private void ShowButton()
{
btnNew.Visible = !csChang.Changing;
btnDelete.Visible = !csChang.Changing;
btnEdit.Visible = !csChang.Changing;
btnOK.Visible = csChang.Changing;
}
private void btnNew_Click(object sender, EventArgs e)
{
csChang.Newing = true;
ShowButton();
txtNumber.Text = Convert.ToString(lvwGrade.Items.Count + 1);
txtGradeName.Text = "";
txtGradeName.Focus();
//ShowToCmb();
txtAmount.Text = "0";
ckbGradeuate.Checked = false;
}
private void btnEdit_Click(object sender, EventArgs e)
{
csChang.Editting = true;
ShowButton();
//ShowToCmb();
}
private void btnDelete_Click(object sender, EventArgs e)
{
DialogResult dr;
dr = MessageBox.Show("确定要删除年级:" + txtGradeName.Text, "设置年级信息", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2);
if (dr == DialogResult.Yes)
{
oGrades.DeleteGrade((int)lvwGrade.Items[lvwGrade.SelectedIndices[0]].SubItems[1].Tag);
RefreshItem();
}
}
private void btnOK_Click(object sender, EventArgs e)
{
//插入或修改时,点击确定
if (csChang.Newing)
{
int Master=0,OldGradeType=0,GradeType=0,Gradeuate=0;
foreach (TeacherObject ATeacher in ScrCommon.gTeachers.Teachers)
{
if (ATeacher.Name == cmbMaster.SelectedItem.ToString())
Master = ATeacher.Code;
}
foreach(GradeObject AGrade_n in oGrades.Grades)
{
if(AGrade_n.Name==cmbOldGrade.SelectedItem.ToString())
OldGradeType=AGrade_n.Code;
}
foreach(GradeTypeObject AGradeType in ScrCommon.gGradeTypes.GradeTypes)
{
if(AGradeType.Name==cmbGradeType.SelectedItem.ToString())
GradeType=AGradeType.Code;
}
if (ckbGradeuate.Checked == true)
Gradeuate = 1;
else
Gradeuate = 0; GradeObject AGrade = new GradeObject(0, txtGradeName.Text, Master,Convert.ToInt32(txtGrade.Text), OldGradeType, GradeType, Convert.ToInt32(txtAmount.Text), DateTime.Today,Gradeuate);
oGrades.AddGrade(AGrade);
csChang.Clear();
RefreshItem(lvwGrade.Items.Count);
ShowButton();
}
else if (csChang.Editting)
{
int i = lvwGrade.SelectedIndices[0];
if (!csChang.Changed)
{
GradeObject AGrade = new GradeObject(oGrades.Grades[i]);
AGrade.Name = txtGradeName.Text;
foreach (TeacherObject ATeacher in ScrCommon.gTeachers.Teachers)
{
if (ATeacher.Name == cmbMaster.SelectedItem.ToString())
AGrade.Master = ATeacher.Code;
}
AGrade.Grade = Convert.ToInt32(txtGrade.Text); foreach (GradeObject AGrade_n in oGrades.Grades)
{
if (AGrade_n.Name == cmbOldGrade.SelectedItem.ToString())
AGrade.OldGrade = AGrade_n.Code;
}
foreach (GradeTypeObject AGradeType in ScrCommon.gGradeTypes.GradeTypes)
{
if (AGradeType.Name == cmbGradeType.SelectedItem.ToString())
AGrade.GradeType = AGradeType.Code;
}
AGrade.Amount = Convert.ToInt32(txtAmount.Text);
if (ckbGradeuate.Checked == true)
AGrade.Graduate= true;
else
AGrade.Graduate = false;
oGrades.UpdateGrade(AGrade);
}
csChang.Clear();
RefreshItem();
ShowButton();
}
else
RefreshItem();
} private void RefreshItem()
{
int i = 0;
if (lvwGrade.SelectedIndices.Count > 0)
i = lvwGrade.SelectedIndices[0];
RefreshItem(i);
}
private void RefreshItem(int ItemSelected)
{
int i = 1; lvwGrade.Items.Clear();
foreach (GradeObject AGrade in oGrades.Grades)
{
if (AGrade == null) return;
ListViewItem AItem = new ListViewItem(Convert.ToString(i));
lvwGrade.Items.Add(AItem);
lvwGrade.Items[i - 1].SubItems.Add(AGrade.Name);
lvwGrade.Items[i - 1].SubItems[1].Tag = AGrade.Code;
lvwGrade.Items[i - 1].SubItems.Add(FindTeacherByCode(AGrade.Master));
lvwGrade.Items[i - 1].SubItems.Add(FindGradeTypeByCode(AGrade.GradeType));
++i;
}
SetItemSelected(ItemSelected);
} private void SetItemSelected(int ItemSelected)
{
lvwGrade.Focus();
lvwGrade.SelectedIndices.Clear();
if (ItemSelected >= lvwGrade.Items.Count)
ItemSelected = lvwGrade.Items.Count - 1;
lvwGrade.SelectedIndices.Add(ItemSelected);
}
private Boolean CheckValid(ClassObject AClass)
{
if (AClass.Name.Trim().Length == 0)
{
MessageBox.Show("年级名称不能为空", "设置年级信息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return false;
}
return true;
}
private string FindTeacherByCode(int Code)
{
string s = "";
foreach (TeacherObject ATeacher in ScrCommon.gTeachers.Teachers)
{
if (Code== ATeacher.Code)
s = ATeacher.Name;
break;
}
return s;
}
private string FindOldGradeByCode(int Code)
{
string s = "";
foreach (GradeObject AGrade in oGrades.Grades)
{
if (Code == AGrade.Code)
s = AGrade.Name;
break;
}
return s;
}
private string FindGradeTypeByCode(int Code)
{
string s = "";
foreach (GradeTypeObject AGradeType in ScrCommon.gGradeTypes.GradeTypes)
{
if (Code == AGradeType.Code)
s = AGradeType.Name;
break;
}
return s;
}
private void ShowToCmb()
{
//显示年级教师到cmbMaster中
cmbMaster.Items.Clear();
foreach (TeacherObject ATeacher in ScrCommon.gTeachers.Teachers)
{
cmbMaster.Items.Add(ATeacher.Name);
}
cmbMaster.SelectedIndex = -1;
//显示班级特征到cmbOldGrade中
cmbOldGrade.Items.Clear();
foreach (GradeObject AGrade in oGrades.Grades)
{
cmbOldGrade.Items.Add( AGrade.Name);
}
cmbOldGrade.SelectedIndex = -1;
//显示年级类型到cmbGradeType中
cmbGradeType.Items.Clear();
foreach (GradeTypeObject AGradeType in ScrCommon.gGradeTypes.GradeTypes)
{
cmbGradeType.Items.Add(AGradeType.Name);
}
cmbGradeType.SelectedIndex = -1;
}
}
}
代码来了
lvwGrade.Items[i - 1].SubItems.Add(FindTeacherByCode(AGrade.Master));
lvwGrade.Items[i - 1].SubItems.Add(FindGradeTypeByCode(AGrade.GradeType));
我汗,前面2句被冲掉,那写了干什么.
之后的,额,实在长得看不下去了,还是要多努力的,一起加油吧.
还好吧,把LZ的代码弄下来整理一下,不是那么差的就是if-else里还嵌套很多的foreach,这个。。这个。。看起来有些乱了。。至于那个Add,不会冲掉前面的,是给lvwGrade.Items[i - 1]添加了3个subitem而已就是太长了,没啥注释看的有些头晕~~~
DAY DAY UP!