要看懂C语言代码的话 英语不用好也没关系
就记住一些词就好了
死记也没问题 不然就那个小本子把对应的记下来
比如
if-判断语句
printf-显示输出语句
int-整型变量声明
这样就行了
也不用关他原本啥意思
知道咋用就好
不把他当英语也没问题
至于变量名名
这个无所谓 只要能见名知意就行
用拼音来命名也没关系的
简言之,根据语意来选择词汇,别无它法……然而,有时我们会不知用什么词汇更合适。
当你想到某个抽象的东西,你更倾向于最先想到的词语,除非你故意不这样,这些词也会抢着出现,直到模糊或改变你的想法。
当你想到一个具体的对象,你觉得词穷,然后你想描述的已经看到了,然后你继续寻找更适合它的词。
哈哈,命名竟成了编程中最难的事~
Martin Fowler曾经在一篇文章中曾经引用过Phil Karlton的话:
There are only two hard things in Computer Science: cache invalidation
and naming things
他说这句话在很长的一段时间内都是他最喜欢的话。可见命名对于广大的程序员来说的确是个大问题。
对于我们中国人来说,问题可能出在两个方面:
– 自打学编程开始就没被教育过要重视命名。
这可以在谭浩强的《C语言入门》一书中可见一斑。《C语言入门》可以说是很多程序员在大学时学习的第一门编程语言使用的教材。而本书通篇都是各种
a,b,c,x,y,z 的命名方式。这种poor naming的方式被广大程序员纷纷效仿,导致如今在很多项目代码中随处可见。
– 命名需要一定的英文功底,而国内程序员的英文水平参差不齐。
很多程序员被教育后开始逐渐重视命名,但是受限于英文水平,不知道使用什么合适的英文词汇来命名。有的甚至直接把中文直译为英文的方式命名,或者直接用拼音来命名,反而得不偿失。
命名的重要性我想不需要过于强调。如今的软件开发早已不是求伯君那种单q匹马的时代。你写下的每一行代码都会在不久的以后被团队的其他人甚至你自己多次查看。如果是个开源项目,那么更会被全球各地的人查看源代码。所以代码的可读性就变得尤为重要。如果读者能够轻松读出你的代码的意图,那么就说明你的命名功底相当扎实。
比如在一个管理系统中,你使用这样的代码: a = b c
很容易让人摸不着头脑,虽然程序能够正常运作,但恐怕没人敢轻易修改这行他们不了解的代码。而如果修改成为这样: weeklypay =
hours_worked pay_rate; 那恐怕极少有人不懂这行代码的意图。
糟糕的命名也会导致大量无谓的注释,这是一个很容易跳进去的陷阱。下一段代码怕别人不明白你的意图,那么就加上注释。这貌似是一个很精妙的想法,实际上却南辕北辙。比如以下的注释:
int d; // elapsed time in days
貌似很容易让人读懂,但是问题还是很多。首先注释不能跟着所有的引用,在定义处了解了d的含义,继续往下看的话却很容易忘记;其次代码更新了,很可能会忘记修改注释,反而给把读者带入歧途。
与其用这样的注释,还不如直接重命名: int elapsedTimeInDays; 这样清晰易懂,还不用维护注释,何乐而不为?
那么如何着手来提高的自己的命名技巧那?
首先寻找一份公认的代码规范,并严格按照这样的标准执行。比如google开源了自己内部使用的语言编码规范,我们可以直接拿来使用。比如请看Google
Java的style guide,相当详实。除此之外还有C++等。这里收集了Google对各种语言的编码规范,非常具有参考价值。
标准的代码规范中的每一条都是有胜出的理由,值得我们遵从。但某些命名问题不一定只有一种最好的解决方式,这就需要团队自己建立起约定。比如对于Java单元测试类的命名方式,不同的团队可能不一样。比如有的团队喜欢以should开头,有的喜欢test开头,有的喜欢骆驼命名法,有些喜欢下划线命名法,每种方式有各自的利弊,没有一种能完全脱颖而出,所以需要团队自行制定。一旦确定使用某一种,那么一定要保持一致。
某些命名规范其实是可以进行自动化检查的,比如在Java应用的构建过程中可以引用checkStyle这款插件,对命名进行一些基本的检查,比如方法名、变量名是否遵循了一定模式等。这样在一定程度上可以强制大家遵守某些约定。自己以前曾经写过一篇文章,请参见这里。
最后要在团队中建立起code review的机制,通过code
review来相互监督纠正命名问题,并且这样更容易达成一致的命名约定,方便协作开发。code
review可以采取非正式会议评审的方式。最简单的方式就是每天找个固定时间大家一起聚在一个显示器前review每个人的代码,现场提出问题,当事人记录下来会后更改。这种方式非常高效。另外有的团队在嵌入代码时可能会引入一些代码评审机制,比如pull
request, cherry pick等。这种review方式比较重量级,反馈周期也较长,好处是可以保证最终迁入的代码是没有问题的。
很多语言和框架为了更加可读,都把命名玩出花来了。比如JavaScript生态圈中重要的单元测试工具Jasmine把测试函数以it命名,这样可以与参数连接起来成为一种表意的自然语言:
如何优雅地为程序中的变量和函数命名?
- 不同的代码段采用不同的命名长度。通常来说,循环计数器(loop
counters)采用1位的单字符来命名,循环判断变量(condition/loop
variables)采用1个单词来命名,方法采用1-2个单词命名,类采用2-3个单词命名,全局变量采用3-4个单词命名。
- 对变量采用具体的命名(specific names)方式,”value”, “equals”,
“data”在任何情况下都不是一种有效的命名方式。
- 采用有意义的命名(meaningful names)。变量的名字必须准确反映它的含义和内容。
- 不要用 o_, obj_, m_ 等前缀命名。变量不需要前缀标签来表示自己是一个变量。
- 遵循公司的变量命名规则,在项目中坚持使用同一种变量命名方式。例如txtUserName, lblUserName,
cmbSchoolType等,否则会对可读性造成影响,而且会令查找/替换工具(find/replace tools)不可用。
- 遵循当前语言的变量命名规则,不要不统一(inconsistently)地使用大/小写字母。例如:userName, UserName,
USER_NAME, m_userName, username, …。
以Java为例:
类名使用驼峰命名法(Camel Case):VelocityResponseWriter
包名使用小写:comcompanyprojectui
变量使用首字母小写的驼峰命名法(Mixed Case):studentName
常量使用大写:MAX_PARAMETER_COUNT = 100
枚举类(enum class)采用驼峰命名法,枚举值(enum values)采用大写。
除了常量和枚举值以外,不要使用下划线’_’
- 在同一个类不同的场景(contexts)中不要复用变量名。例如在方法、初始化方法和类中。这样做可以提高可读性和可维护性。
- 不要对不同使用目的的变量使用同一个变量名,而是赋予它们不同的名字。这同样对保持可读性和可维护性很重要。
- 变量名不要使用非ASCII字符(non-ASCII chars)。这样做可能会在跨平台使用时产生问题。
-
不要使用过长的变量名(例如50个字符)。过长的变量名会导致代码丑陋(ugly)和难以阅读(hard-to-read),还可能因为字符限制在某些编译器上存在兼容性问题。
- 仅使用一种自然语言(natural language)来命名变量。例如,同时使用德语和英语来命名变量会导致(理解)不一致和降低可读性。
- 使用有意义的方法名。方法名必须准确表达该方法的行为,在多数情况下以动词(verb)开头。(例如:createPasswordHash)
- 遵循公司的方法命名规则,在项目中坚持使用同一种方法命名方式。例如 getTxtUserName(), getLblUserName(),
isStudentApproved(),否则会对可读性造成影响,而且会令查找/替换工具不可用。
- 遵循当前语言的变量命名规则,不要不统一地使用大/小写字母。例如:getUserName, GetUserName, getusername,
…。
以Java为例:
方法使用首字母小写的驼峰命名法:getStudentSchoolType
方法参数使用首字母小写的驼峰命名法:setSchoolName(String schoolName)
- 使用有意义的方法参数命名,这样做可以在没有文档的情况下尽量做到“自解释(documentate itself)”
总之,命名问题只是整个编码规范中的一小部分,但是起的作用举足轻重,它是判断一个程序员是否专业的必要标准。
大家都用网克了,网克的关键是加载DOS下的网卡驱动程序,下面我就详细说一下如何在DOS下加载网卡驱动程序。
DOS下的网卡驱动程序有两种标准
1、Packet Driver
符合此标准的网卡驱动程序通常是一个扩展名为COM或者EXE的文件,要加载它只要在命令行下行运这个文件即可。例如8139网卡的驱动程序为RTL8139COM,则在DOS提示符下输入
rtl8139 0x60 -m 100full
你的网卡驱动需要加什么参数请自行查看驱动程序包中的相关说明文件。
2、NDIS2 Drivers
符合此标准的网卡驱动程序是一个扩展名为DOS的文件。要在DOS下加载此种驱动请确认你有以下文件:
首先 当然是网卡的驱动程序了,我这里以AMD PCNet Family Ethernet Adapter为例,它的驱动是PCNetDOS
其次 是Microsoft的NDIS支持文件,包括Protmanexe、protmandos、Netbindcom三个文件
第三 是Ghost中自带的Dis_pktdos
最后 是编写一个protocolini文件,这是一个文本文件,内容如下:
[protman]
drivername=PROTMAN$
[pktdrv]
drivername=PKTDRV$
bindings=nic
intvec=0x60
chainvec=0x66
[nic]
DriverName = PCNTND$
MaxMultiCasts = 10
TxBuffers = 4
RxBuffers = 4
在[nic]这一行之前的内容对任何网卡都是一样的,不用更改,
在[nic]之后的第一行为DriverName=××××$ ,这里的××××是网卡驱动程序名,(请注意区分网卡驱动程序文件名和网卡驱动程序名,
网卡驱动程序文件名就是网卡驱动程序保存在硬盘上的文件名,在本例中是PCNetDOS,网卡驱动程序名是网卡驱动程序内部的一个名字。)通
常驱动程序名就是驱动程序文件名去掉扩展名之后的那一部分,比如Sis900的网卡驱动程序文件名是sis900dos,它的驱动程序名就是sis900
。但也有的不是这样,如本例中网卡驱动程序名是pcntnd 。如何知道你的网卡的驱动程序名请查看你的网卡驱动程序包中的相关说明文件。
将以上的六个文件放到同一个文件夹下,本例中放在\net下。编写configsys,如下:
device=\net\protmandos /i:\net (/i:\net 指明protocolini存放在哪个文件夹下)
device=\net\dis_pktdos
device=\net\pcnetdos (这里是网卡的驱动程序,请改为你所用的网卡的驱动程动)
编写autoexecbat,如下:
\net\netbindcom
在DOS底下使用网络首先需要安装MSClient,这东西可以到微软的网站下载,
也可以在NT的光盘里找。
复制“Microsoft NETWork Client V30 for MS DOS and windows”安装盘(该盘可将Winsows NT40 Server的Clients\MS Client\DISKS目录下Disk1和Disk2文件拷贝至两张软盘上即可)。
(1)将第一张盘插入DOS工作平台的软驱中,运行其上的SETUPEXE程序。
(2)当出现“Setup for Microsoft NetWork Client30 for MS DOS”信息时,按回车键即可。
(3)设置安装目录,缺省为“C:\NET”。
(4)当出现“Set NetWork Buffers”信息时,可按回车键使用最大数的缓冲击区,否则按“C”键。
(5)在随后出现的“User Name”处输入登录对等网络的用户名。
(6)进入“ NetWork Configuration”窗口后,设置以下三组网络选项:
AChange Name
Change User Name:输入或更改用户名称。
Change Conputer Name:输入或更改计算机名称。
Change Workgroup Name: 输入或更改域名名称(必须和本网络工作组名一致)。
Change Domain Name:输入或更改域名名称(在对等网络中同工作组名)。
B Change Setup Options
Change Redir Options:选择“Full Redirector”。
Change start up Options:选择“Run Network Client”。
Change Logon Validation:“Do Not Logon to Donain”。
Change Not pop Hot Key :可以不更改。
CChange Network Configuration
在此处可以选择或添加网卡和网络通信协议,网络协议应将默认的先项“NW Link IPX Compatible Transport”改为“Microsoft NetBEUI”。如果是TCP/IP?呵呵,自己试试!
(7)上述三项设置完毕后,选择“The listed Options Correct”即可。
(8)复制完成后,按回车键重新启动计算机,即可登录到对等网络中,这时CONFIGSYS文件中会多出两行命令“Device=C:\net\ifshlpsys”和“LastDrive=Z”,而在autoexecbat文件中则多出一行 C:\net\net srart,并会出现如下的登录信息: Type your user name or press Enter if it is :(按回车即可)
Type your password:(按回车或输入一个密码)
随后出现一行信息:“The command completed successfully”,这说明己登录到了对等网络中。
值得注意的是:DOS计算机不能设置共享资源,但可以使用共享资源,使用net use<逻辑驱动器名>+UNC(Uniform Naming Convention统一命名)格式就可以将指定计算机上的共享资源映射为DOS机的一个逻辑驱动器,如:NET USE F:\\RIP\C就可以将计算机名为RIP的C盘映射为本机的F盘上。或者键入命令NET回车进入共享资源图形映射界面,按UNC格式输入即可。
手工添加网卡驱动的方法如下。
以最常见的台式机 RTL8139网卡为例。
首先打开网卡驱动目录中的NDIS2(NDIS2DOS目录)目录。并用记事本打开其中的OEMSETUPINF文件。找到其中的[netcard]段,把其中的 RTL8139="RTL8139 Fast Ethernet Adapter",000,ndis,ethernet,real,RTL8139,RTL8139_nif 复制一下。同时打开Msclient disk1中的WCNETINF文件,把上面复制的内容粘贴到[netcard]段; key = description, MSID, type, media, mode, install, protini, style的下面一行。
回头将[RTL8139]、[RTL8139_nif]两段标题及内容(这两段的标题正是刚刚复制的那据话的最后两个单词)复制粘贴到WCNETINF的末尾。
将[RTL8139]段原有的内容注释掉如下。
;[RTL8139]
;devdir=:rtsnddos
;device=rtsnddos,@devdir\rtsnddos
按上面的内容自己手工写下
[RTL8139]
ndis2=1:rtsnddos
存盘。
其中的rtsnddos就是我们要用的NDIS2驱动程序,将它由驱动程序目录中找出,复制到MSclient 安装盘的disk1中。好了,驱动列表已经添加完毕。
以上就是关于我英语极烂,怎么看懂c语言代码,怎么给变量命名全部的内容,包括:我英语极烂,怎么看懂c语言代码,怎么给变量命名、如何优雅地为程序中的变量和函数命名、电脑必备的驱动程序的英文名字等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)