对一些坏代码的总结、批判

今天就工作过程中遇见的烂代码、坏代码做一些总结。

公司代码一:

bool CBusSystem::UpdataBus(BUS_INFO* bus)
{
	m_BusMapLock->lock();
	CBusInfo* tmp = GetBusByGuid(strutil::format("%d", bus->dwID));
	if (tmp)
	{
		tmp->m_Lng = bus->fLongitude;
		tmp->m_Lat = bus->fLatitude;
		tmp->m_Visible = bus->bVisible.MapView;
		tmp->m_Angle = bus->iAngle;
		tmp->m_Speed = bus->iSpeed;
		tmp->m_Direct = bus->iDirection;
		tmp->m_CurStationName = bus->chStation;
		*tmp->m_Gps = bus->busGps;
		tmp->m_OnLine = bus->byOnLine;
		if (tmp->m_NeedNewAddress)
		{
			tmp->m_Address = g_DataContain.m_GpsAddressGet->GetAddress(tmp->m_Lng, tmp->m_Lat);
			tmp->m_NeedNewAddress = false;
		}
	}
	m_BusMapLock->unlock();
	return true;
}

抛开具体功能:

1:指针bus、m_BusMapLock未判断空就直接使用了。

2:tmp 变量命名。

3:g_DataConain 这种全局变量数据同步,没有同步的管理。

4:strutil::format("%d", bus->dwID)。通用简单功能不宜封装,封装会增加代码的阅读负担。这种数字格式化输入反人类。

觉得可以做的改进:

1:指针使用的前的判断。这个必须加上。

2:全局共享内存数据的处理。可以考虑支持多线程的单例代替全局变量。从架构上应当调整。

3:指针类型变量增加pPointer 标识。(优化,方便后续维护人员的阅读)

4:命名bus 修改:pBusInfo。tem 修改 :pFindIDBusInfo。(优化,体现变量意图)

变量名应当体现用途意义

最好可以有的优化。

1:bus 参数的传递:指针修改为引用:const BusInfo &srcBusInfo

2:锁的使用:使用对象的构造、析构 来管理函数的调用。

3:UpdataBus 修改:Updata**BusInfo(表示具体对象)

4:针对一些关键对象的管理,可以构建专门的管理类。

抛开软件行业知识、软件开发应用过程使用的技术,写代码本身就是一门非常需要打磨的技术。

如果你身边有这样写代码的大神,你将如何处理呢...?你替他人填过哪些坑呢?

猜你喜欢

转载自blog.csdn.net/mrlzl9/article/details/81391999