论C++标准委员会制定的一条不合理的标准
C++标准委员会不让for后()中定义的变量在外边用,我觉的非常不合理
在我做的太极语言中是这样设计的,()中的名字注册进入首个含名字空间的母垣(垣的概念大家都知道了吧),中间如果经过了{}则要加序号标记。
for()中定义的变量让不让在外边用曾经是一个争议挺大的问题.在太极语言中是这样考虑的:单独从for本身考虑两方面的意见不好确定,把目光放向全局.就是看()中定义的变量是否要全区域可见.
在太极语言中讲究"做一件事情只要一句话",让紧密关联的代码能写在一句中.
比如下面的一个函数调用.
fc(&(int a));//原型为 void fc(int * p);
k=a;
所以必须让()中定义的变量全区域可见.
在C/C++中你却必须这样写,
int a;
fc(&a);
k=a;
违背了"紧密关联的代码能写在一句中"这个原则.
举具体例子对比一下:
太极语言:
FindFirstFile(pfindstr,&(WIN32_FIND_DATA wfd));
C/C++:
WIN32_FIND_DATA wfd;
FindFirstFile(pfindstr,&wfd);
太极语言:
m_edit1.GetWindowText(CString cstr);
m_edit2.SetWindowText(cstr);
C/C++:
CString cstr;
m_edit1.GetWindowText(cstr);
m_edit2.SetWindowText(cstr);
太极语言:
FindFirstFile(char * pfindstr="*.*",&(WIN32_FIND_DATA wfd));
C/C++:
char * pfindstr="*.*";
WIN32_FIND_DATA wfd;
FindFirstFile(pfindstr,&wfd);
从代码的可读性与直观性与可维护性上太极语言所采用的方式是比C/C++好的.
需要预定义的变量增多时这种表现更明显.必须让()中定义的变量全区域可见!
那么从形式连贯一致性角度考虑,也要让for()中定义的变量全区域可见!