国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

代碼Review發(fā)現(xiàn)問(wèn)題

2019-11-17 03:10:28
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

代碼Review發(fā)現(xiàn)問(wèn)題

FrmMain.cs中存在問(wèn)題

1. int i=0 設(shè)定為了全局常量且未在類頂部,出現(xiàn)問(wèn)題時(shí)不好查找

i 屬于常用臨時(shí)變量,設(shè)定全局變量容易引起混亂

2.定義的全局變量但僅在一處方法中使用,定義全局變量過(guò)多

3.變量名及控件名等意義不明確又缺少注釋,如頂部定義的全局變量

long length = 0;        long loading = 0;        PRivate string oldPath = null;        private int random = 1;        private int repeat = 0;        private string quotaNum = null;

其他類似 timer1,timer2,l1,l2等等。。。

4. 存在多處重復(fù)或相似代碼

如下面一段代碼

for (int i = 0; i < FrmLog.FileListOfLoginedUser.Count; i++){    if ((FrmLog.FileListOfLoginedUser[i].Path) == CurrentPath)    {        string itemName = FrmLog.FileListOfLoginedUser[i].ItemName;        string path = FrmLog.FileListOfLoginedUser[i].Path;        string[] itemArr = new string[5];        itemArr[0] = itemName;        itemArr[1] = path;        itemArr[2] = FrmLog.FileListOfLoginedUser[i].ItemType;        itemArr[3] = FrmLog.FileListOfLoginedUser[i].FileSize.ToString() + "KB";        itemArr[4] = FrmLog.FileListOfLoginedUser[i].UploadTime;        itemNameList.Add(itemArr);    }}

在以下方法中多次調(diào)用而沒(méi)有重構(gòu)提取出來(lái),日后返回值如有變動(dòng)需要多處修改很容易混亂

void isSuccess(object iparam, object oparam) Line : 在138-236 行

private void FrmMain_Load(object sender, EventArgs e) 465-520行

private void 刪除ToolStripMenuItem_Click(object sender, EventArgs e) 710-778行

private void btnToParent_Click(object sender, EventArgs e) 返回到上一級(jí) 782-842行

private void ChangeListViewDisplayStyle(object sender, EventArgs e) 改變文件列表顯示方式 867-907行

private void btnSearch_Click(object sender, EventArgs e) 點(diǎn)擊搜索時(shí) 1325-1377

另外如下面一段代碼,作用是為了檢測(cè)上傳的文件是否存在同名文件,但是在多個(gè)方法中反復(fù)拷貝了這段代碼

for (int j = 0; j < files.Length; j++)            {                saveName = Path.GetFileName(files[j]);                int i = 0;                for (i = 0; i < lvItemsList.Items.Count; i++)                {                    ListViewItem item = lvItemsList.Items[i];                    if ((lvItemsList.Items[i].Text).Contains(Path.GetFileName(saveName)))                    {                        if (MessageBox.Show("您已上傳文件" + saveName + "有同名,是否覆蓋?", "警告", MessageBoxButtons.YesNo) == DialogResult.Yes)                        {                            repeat = 1;                            UpLoadFile(FrmLog.ServerUrl + "/Default.aspx/", files[j], saveName, progressBar1);                            // timer2.Enabled = true;                            i = lvItemsList.Items.Count;                        }                        else                        {                            this.Random();                            i = lvItemsList.Items.Count;                        }                    }                }

還有下面一段代碼,作用是根據(jù)文件字節(jié)數(shù)改為以KB,MB,GB等方式顯示,多處存在類似代碼而未提取公用方法

if (FrmLog.FileListOfLoginedUser[j].FileSize * 1024 < 1024)                    {                        downSize = (FrmLog.FileListOfLoginedUser[j].FileSize * 1024) + "B";                    }                    else if (FrmLog.FileListOfLoginedUser[j].FileSize < 1024)                    {                        downSize = FrmLog.FileListOfLoginedUser[j].FileSize + "KB";                    }                    else                    {                        downSize = decimal.Round(Convert.ToDecimal(FrmLog.FileListOfLoginedUser[j].FileSize / 1024), 2).ToString() + "M";                    }

該代碼存在其他處的代碼如下:

if (UsedSpace < 1000)            {                this.Text = "地稅云盤  " + FrmLog.LoginedUser.realName + "  " + UsedSpace + "KB/" + quotaNum;            }            else            {                float sumFileSize = UsedSpace / 1024;                //decimal d = decimal.Parse(sumFileSize.ToString());                decimal d = Convert.ToDecimal(sumFileSize);                sumFileSize = float.Parse(decimal.Round(d, 2).ToString());                this.Text = "地稅云盤  " + FrmLog.LoginedUser.realName + "  " + sumFileSize + "M/" + quotaNum;            }

上面代碼微改進(jìn):

1.提取 "地稅云盤 " + FrmLog.LoginedUser.realName + " "為變量,如下

string title="地稅云盤 " + FrmLog.LoginedUser.realName + " ";

2.以MB顯示直接用 (UsedSpace/1024).toString(“f2”)即可

5.代碼畫(huà)蛇添足晦澀難懂又欠缺注釋,如

for (int j = 0; j < files.Length; j++)            {                saveName = Path.GetFileName(files[j]);                int i = 0;                for (i = 0; i < lvItemsList.Items.Count; i++)                {                    ListViewItem item = lvItemsList.Items[i];                    if ((lvItemsList.Items[i].Text).Contains(Path.GetFileName(saveName)))                    {                        if (MessageBox.Show("您已上傳文件" + saveName + "有同名,是否覆蓋?", "警告", MessageBoxButtons.YesNo) == DialogResult.Yes)                        {                            repeat = 1;                            UpLoadFile(FrmLog.ServerUrl + "/Default.aspx/", files[j], saveName, progressBar1);                            // timer2.Enabled = true;                            i = lvItemsList.Items.Count;                        }                        else                        {                            this.Random();                            i = lvItemsList.Items.Count;                        }                    }                }                if (!(i == lvItemsList.Items.Count + 1))                {                    UpLoadFile(FrmLog.ServerUrl + "/Default.aspx/", files[j], saveName, progressBar1);                    //  timer2.Enabled = true;                    i = lvItemsList.Items.Count;                }

意圖應(yīng)該是存在同名文件進(jìn)行提示,點(diǎn)Yes則上傳覆蓋文件,否則直接上傳,這樣應(yīng)該思路很清晰,不知為何還要比較!(i == lvItemsList.Items.Count + 1), 另外!(i == lvItemsList.Items.Count + 1) 這種代碼寫(xiě)法有些蹩腳容易讓人費(fèi)解,一般都是 i!=lvItemsList.Items.Count + 1

6. 代碼冗長(zhǎng),多次嵌套if else 容易讓人看暈,建議提取出方法或添加return

/// <summary>        /// 雙擊進(jìn)入文件夾        /// </summary>        private void lvItemsList_MouseDoubleClick(object sender, MouseEventArgs e)        {            this.isFind = false;            ListViewHitTestInfo info = lvItemsList.HitTest(e.X, e.Y);            if (info.Item == null) return;            lvItemsList.LargeImageList = UrlImage.SmallImageList;            if (!(info.Item.Text.Contains(".")))//todo 此處存在問(wèn)題,文件夾也可包含點(diǎn) .,應(yīng)以itemtype判斷            {                lvItemsList.Items.Clear();                CurrentPath = info.Item.Tag.ToString() + "/" + info.Item.Text;                // CurrentPath = info.Item.Tag.ToString() + "/" + info.Item.Text;                FrmLog.FileListOfLoginedUser = this.GetFileList();                oldPath = info.Item.Tag.ToString();                if (FrmLog.FileListOfLoginedUser == null)                {                    this.lblCurPath.Text = CurrentPath;                    return;                }                for (int i = 0; i < FrmLog.FileListOfLoginedUser.Count; i++)                {                    if (FrmLog.FileListOfLoginedUser[i].Path == CurrentPath)                    {                        ListViewItem lvItem = new ListViewItem();                        lvItem.Text = FrmLog.FileListOfLoginedUser[i].ItemName;                        lvItem.Tag = FrmLog.FileListOfLoginedUser[i].Path;                        if (switchViews == "1")                        {                            /* if (!(lvItem.Text.Contains(".")))                             {                                 lvItem.ImageIndex = 0;                             }                             else                             {                                 int icon = UrlImage.ImageIndex(System.IO.Path.GetExtension(lvItem.Text));                                 lvItem.ImageIndex = icon;                             }*/                            int icon = 0;                            if (FrmLog.FileListOfLoginedUser[i].ItemType == "文件夾")                            {                                icon = UrlImage.ImageIndex(".folder");//新加                            }                            else                            {                                icon = UrlImage.
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 富蕴县| 温州市| 云南省| 常宁市| 图木舒克市| 九龙坡区| 泽库县| 大宁县| 新郑市| 晋宁县| 长岛县| 项城市| 忻城县| 惠安县| 兰州市| 邵东县| 张北县| 新化县| 克拉玛依市| 南投市| 麻阳| 衡阳县| 库伦旗| 竹山县| 多伦县| 台中市| 定兴县| 侯马市| 永川市| 来凤县| 化德县| 平安县| 甘孜县| 大英县| 芜湖市| 平南县| 山东| 西昌市| 新和县| 泗阳县| 绍兴县|