为什么会这样写呢?

问题描述 投票:0回答:1

我正在阅读 Qualcomm 的 hci_qcomm_init 工具的代码,我注意到这个

if
是以我以前从未见过的方式编写的:

if (bt_hci_qcomm_pfal_get_bdaddress((uint8*)(&run_time_params.bd_address[0])) == TRUE)
{
}
else
{
    DEBUGMSG(ZONE_WARNING,TEXT("bt_hci_qcomm_init Failed to read BD Address from NV default to %02X:%02X:%02X:%02X:%02X:%02X"),
        (int)default_bt_bd_addr[0],(int)default_bt_bd_addr[1],(int)default_bt_bd_addr[2],
        (int)default_bt_bd_addr[3],(int)default_bt_bd_addr[4],(int)default_bt_bd_addr[5]  );

    // using default BT address
    std_memmove((uint8*)(&run_time_params.bd_address[0]), (const uint8 *)(&(default_bt_bd_addr[0])),BT_QSOC_MAX_BD_ADDRESS_SIZE);
}

有什么理由让你写一个

if
,其中
if
部分为空,所有动作都在
else
中,还是他们只是在那里犯了一个错误?

我个人会将该函数的结果与

FALSE
进行比较(或在函数前添加
!
)并避免使用
else

谢谢。

c embedded-linux hci
1个回答
0
投票

为什么会这样写呢?

问题中没有足够的信息来明确确定作者的想法。可能性包括:

  • 作者希望写出
    if ( test)… else…
    的陈述,其中
    test
    自然是“真实”或肯定的,因为他们相信这更有利于人类的可读性和理解。
  • 作者希望编写代码,其中
    if
    语句的所有“then”部分处理正常工作条件,而“else”部分处理错误,并且这个特定的
    if… else…
    语句在正常情况下不需要任何进一步的代码,所以那个箱子是空的。
  • 程序最初在“then”情况下有代码,但它被程序的后续修订所消除,并且进行这些修订的程序员决定做最少量的工作,删除不再需要的代码,而不需要做额外的工作将
    if… else…
    语句重写为仅
    if…
    语句的工作。
  • 代码是由自动代码编写软件根据其他输入生成的,该生成结果是一个空的“then”案例。
© www.soinside.com 2019 - 2024. All rights reserved.