如题,小弟郁闷中,是不是我不适合做这个呀,写代码有那么难吗?今天干脆休息!请高人指教

解决方案 »

  1.   

    首先,你要明白,三日写几百行代码本来就不是重活,记得以前一下午还写了几百行的存储过程、触发器等,所以你并不要期望太高。我们刚开始写大量的代码时,思路肯定不会提前设计好,往往写到最后,编程思路跟着代码走,这,这种情况很多,关键你写之前,多看看MVC、设计模式、架构之类的文章,会有所帮助
      

  2.   

    也是这么过来的.
    几百行代码?如果只是业务的话,可能还行,但是如果是一个方法或一个功能,一听的话就不想看.怎么说呢?
    老大们总觉得,分下去的活,是简单的,那难得呢?据经验来看,难得一般他都会主动找你商量,比如基盘开发.
    厉害的首先从整体性能来考虑;一般的话,第一反应会想用什么方法来实现,这就是区别.
    面向对象的话,常用的方法别人都会作好的了,直接调用就行,比如说upload,download,封装的方法太多了,
    没有必要从 协议,byte 开始构想设计,简单来说,一行代码搞定,可以44。
    如果你的几百行代码是重复牛人的工作的话,那你的思路肯定没有牛人厉害,不知理解对否。
    这玩艺儿急不得,慢慢来积累
      

  3.   

    代码来了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;
    }
    }
    }
    代码来了
      

  4.   

    完了,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句被冲掉,那写了干什么.
    之后的,额,实在长得看不下去了,还是要多努力的,一起加油吧.
      

  5.   


    还好吧,把LZ的代码弄下来整理一下,不是那么差的就是if-else里还嵌套很多的foreach,这个。。这个。。看起来有些乱了。。至于那个Add,不会冲掉前面的,是给lvwGrade.Items[i - 1]添加了3个subitem而已就是太长了,没啥注释看的有些头晕~~~
      

  6.   

    虚心 虚心 再虚心
    DAY DAY UP!