首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请高人帮忙把上面的代码优化上

2012-07-31 
请高人帮忙把下面的代码优化下。主要是要优化 CDdcciCCCFactoryCommand function下的大的case语句,看能不能

请高人帮忙把下面的代码优化下。
主要是要优化 CDdcciCCCFactoryCommand function下的大的case语句,看能不能用一种比较好的方式把大switch下的含有很长段代码的case语句拆分成小的function,麻烦了。。。等着交差啊。。详见连接
因篇幅有限只列出了框架,
[code=C/C++][/code]
//--------------------------------------------------
// Description : None
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CDdcciCCCFactoryCommand()
{
  switch(g_ucDdcciRxBuf[_DDCCI_PARAMETER] )
  {
  case 0x00: // Alignment
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x00: //Enter alignment
   
  break;

  case 0x01: //Exit alignment
  break;
  default:
  break;
  }
  break;
  case 0x0c:
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x10://show model name
  break;
  case 0x11://show model name
#if(_PROJECT == _RL6096_AAA_313H)
  break;
  default:
  ReturnNG();
  break;
  }
  break;
  case 0x0d:
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x00:
   
  break;


  case 0x01:
  if(_AUTO_SUCCESS == ScalerAutoDoWhiteBalance(_ADC_RGB))
  {  
  }
  else
  {
  }
  break;
  case 0x02: // Power On
   
  if(SysPowerGetPowerStatus() == _POWER_STATUS_OFF)
  {
  CDdcciFactoryReturnCommand(_POWER_ON_MSG);
  }
  else
  {
  CDdcciFactoryReturnCommand(_POWER_ON_MSG);
  }
  break;
  case 0x03: // Power Off
   
  if(SysPowerGetPowerStatus() != _POWER_STATUS_OFF)
  {  
  }
  else
  {
  }
  break;
  case 0x04: // Burnin On
   
  CDdcciFactoryReturnCommand(_BURNIN_ON_MSG);
  break;


  case 0x05: // Burnin Off
   
  break;


  case 0x06:  
  break;


  case 0x07:  
  break;


  case 0x08: //Go Sleep
  if(!GET_SLEEPING_STATUS())
  {  
  if(SysPowerGetPowerStatus() == _POWER_STATUS_NORMAL)
  {  
  }
  }
  CDdcciFactoryReturnCommand(_GO_SLEEP_MSG);


  break;
  case 0x09: //Go Normal
  break;
  case 0x0C:
  
  break;
  case 0x18:// Logo on
  SET_FACTORY_DISPLAY_LOGO_STATUS(_FACTORY_DELL_LOGO_ENABLE);
  break;
  case 0x19://Logo off
  break;
  case 0x20://set energy mode
   
  break;
  case 0x21://exit energy mode
  break;


  case 0x2b://Set text mode
   
  break;


  default:
  CDdcciFactoryReturnNG();
  break;
  }
  break;


  case 0x0e: //pattern
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x00: // Recall Factory
  break;


  case 0x03: // Show Ver
  break;
  case 0x04: // IC Type
  CDdcciFactoryReturnCommand(_READ_IC_TYPE);
  break;
  case 0x05: // 32 Grays
  CDdcciFactoryReturnCommand(_32_GRAYS_MSG);
  break;
  case 0x06: // White Pattern  
  CDdcciFactoryReturnCommand(_WHITE_PATTEN_MSG);
  break;
  case 0x07: // Black Pattern
  CDdcciFactoryReturnCommand(_BLACK_PATTEN_MSG);
  break;
  case 0x08: // Red Pattern
  CDdcciFactoryReturnCommand(_RED_PATTEN_MSG);
  break;
  case 0x09: // Green Pattern
  CDdcciFactoryReturnCommand(_GREEN_PATTEN_MSG);
  break;  
  case 0x0a: // Blue Pattern
  break;  
  case 0x0b: // Close Pattern

  break;
  case 0x20:
  break;
  default:
  CDdcciFactoryReturnNG();
  break;
  }
  break;
  case 0x01: //Set User Model
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x00: // Set color temp to User
  break;
  case 0x01: // Set color temp to SRGB
  break;
  default:
  CDdcciFactoryReturnNG();
  break;
  }
  break;
  case 0x05:
  case 0x06:
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x05:
  break;
  default:
  break;
  }
  break;
  case 0x07:
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x02:
  break;
  default:
  CDdcciFactoryReturnNG();
  break;


  }
  break;
  case 0x07:
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x05:
  break;
  default:
  break;
  }
  break;
  case 0x09:
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x03
  break;
  default:
  CDdcciFactoryReturnNG();
  break;
  }
  break;
  case 0x11: //Save User Model
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x10: // Save User
  break;
  #if(_COLORTEMP_SRGB == _ON)
  case 0x11: // Save SRGB
  break;
  default:
  CDdcciFactoryReturnNG();
  break;
  }
  break;
  case 0x15: //Save 5400K-WARM
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x14: // Save 5400-Warm
  break;
  case 0x15: // Save 5500
  break;
  #endif // End of (_COLORTEMP_5500 == _ON)
  case 0x17: // Save 5700-Warm
  break;
  default:
  break;
  }
  break;
  case 0x16: //Save 6500K-WARM
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x15: // Save 6500-Warm
  break;
  default:
  CDdcciFactoryReturnNG();
  break;
  }
  break;
  case 0x17: //Save 7500K-WARM
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x12: // Save 7500-Warm
  break;
  default:
  break;
  }
  break;
  case 0x17: //Save 7500K-WARM
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x15: // Save 7500-Warm
  break;
  default:
  break;
  }
  break;
  case 0x19: //Save 9300K-COOL
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x13: // Save 9300-Cool

  break;
  default:
  break;
  }
  break;
  case 0x40: //write command
  switch( g_ucDdcciRxBuf[_DDCCI_ITEM] )
  {
  case 0x00: // Brightness
  break;
  case 0x01: // Contrast
  break;
  case 0x02: //R-Gain
  break;
  case 0x03: //G-Gain
  break;
  case 0x04: //B-Gain


  break;
  case 0x05: //Write Text mode PWM
  break;
  case 0x06: // Save Text mode PWM
 
  break;


  case 0x07: //Read Text mode PWM
   

  break;


  case 0x08: // color reset
   
  break;

  。。。。。。。。详见连接

[解决办法]
挺好的,优化什么?
[解决办法]
每个大的case,都可以做出一个函数
[解决办法]
自己做一下吧
[解决办法]
一个函数咋能搞这么长了, 还要往下拖半天, 还是分割成多个函数吧, 
还有建议把那数字换成宏

热点排行