日期:2014-05-20  浏览次数:20911 次

【代码重构】此贴长期有效
有没有那么一瞬间,你的代码写的让自己和兄弟们都感觉到很凌乱?
有没有那么一瞬间,有段代码就放在你眼前,你却读不懂它?
有没有那么一瞬间,你要花很长很长时间去读别人写的代码?
有没有那么一瞬间,你的参数过长却不知道怎么办?
...


现在,可以把你的代码勇敢的贴出来,让那些有代码洁癖的程序员们帮您重构,并和你一起讨论您的程序中所存在的问题。



代码要求:
1、有简短的说明。
2、贴代码前最好自己先斟酌一下,不加思索的贴出来会被和谐。
3、代码最好不要超过500行。(注意不要哗哗一顿贴,几千行那种!)
4、贴出来要注意代码高亮,目前只支持C#代码。


遗漏的以后补充。

------解决方案--------------------
有没有那么一瞬间..
------解决方案--------------------
楼主,讨论程序员和洁癖的问题是要被喷的。

http://topic.csdn.net/u/20120901/13/f0638b0d-5769-4856-99e8-71b4a878c866.html
------解决方案--------------------
我也有点,但我技术菜
------解决方案--------------------
叶公 ????
------解决方案--------------------
跟帖。
------解决方案--------------------
mark.过来学习的  
------解决方案--------------------
引用:
楼主,讨论程序员和洁癖的问题是要被喷的。

http://topic.csdn.net/u/20120901/13/f0638b0d-5769-4856-99e8-71b4a878c866.html
你被喷不是因为你的观点怎么样  是因为你的态度有问题  
不配这个词太绝对了 完全是下定义  要是用不合适就不会有那么多人喷了
------解决方案--------------------
我不太喜欢过于重构,
比如有个2行的代码在一个类中用了2次(以后还用不用不知道),
我就不愿意把它提出来
------解决方案--------------------
我先支持一下再说
------解决方案--------------------
很亂,自己都覺得亂。
------解决方案--------------------
过来学习,又被吞了。。。
------解决方案--------------------
#define TIMER_START_BIT	HW_BIT(23)


typedef hw_u32_t hw_timer_t;


static volatile hw_timer_t *timers = (volatile hw_timer_t *)MK_TIMER_REG_BASE;


hw_err_t hw_timer_init(hw_timerid_t timerid, 
   hw_timerbase_t base, hw_u16_t count, hw_bool_t cntdown, 
   hw_bool_t start, hw_bool_t reload, hw_bool_t irqemit)
{
#define START_OR_NOT (start ? TIMER_START_BIT : 0)
#define IRQEN_OR_NOT (irqemit ? HW_BIT(22) : 0)
#define BASE (((hw_u32_t)base & 0x3) << 16)
#define COUNT (count/* & 0xFFFF*/)

if (timerid >= HW_TIMER_N 
------解决方案--------------------
 base >= HW_TIMER_BASE_N)
return HW_ERR;

/* setup timer auto reload and count mode */
if (reload)
HW_BIT_CLR(MK_REG_TIMER_CTRL, HW_BIT(timerid));
else
HW_BIT_SET(MK_REG_TIMER_CTRL, HW_BIT(timerid));
if (cntdown)
HW_BIT_SET(MK_REG_TIMER_CTRL, HW_BIT(timerid + 5));
else
HW_BIT_CLR(MK_REG_TIMER_CTRL, HW_BIT(timerid + 5));

timers[timerid] = START_OR_NOT 
------解决方案--------------------
 IRQEN_OR_NOT 
------解决方案--------------------
 BASE 
------解决方案--------------------
 COUNT;

return HW_OK;
}


好吧,我承认,这个函数的参数确实有点长了?
那么,各位达人,怎么重构呢?
1. 将各个参数放入一个结构体,然后然后传递一个结构体近来?
2. 将各个参数建立一个单独函数设置?
鉴于目前的状况来讲,方法2是行不通的,因为那个古怪的芯片的古怪寄存器在分开写的时候会出毛病.
------解决方案--------------------
本帖最后由 wxr0323 于 2012-09-08 20:56:15 编辑
成长始终都是有个过程的 我先来献丑吧 前辈们指点。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using AsiaStar.Core.Text;
using System.Data;
using AsiaStar.Galaxy.CMS.Front.Entity;
namespace AsiaStar.Galaxy.CMS.Front.View.Model
{
    public class LinkDropdownListInfo : IViewInfo
    {
        #region 链接下拉列表视图属性
        /// <summary>
        /// 标题
        /// </summary>
        private string _title;
        public string Title
        {
            get { return _title; }
            set { _title = value; }
        }

        /// <summary>
        /// 显示字段
        /// </summary>
        private List<ViewField> _showField;
        public List<ViewField> ShowField
        {
            get { return _showField; }
            set { _showField = value; }