| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1163 人关注过本帖
标题:关于Util的问题
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏
已结贴  问题点数:20 回复次数:29 
关于Util的问题
RT
在一个程序代码中看到Util.h  但不知道他是什么意思。
他里面的内容是两个函数声明:char  GetCharInput( void );    //  获取一个字符
                             char  CharToLower( char ch );  // 若参数中的字符为大写字母则返回其小写
代码中还有个FileUtil.h注释说是:与文件相关的方法及数据类型的定义。
貌似Util应该有个相关的意思,就像File一样,但查了下词霸,解释为:跑龙套。这个意思和头文件的命名有什么关联吗?这里的Util.h头文件(比如像FileUtil.h)应该怎么通过其字面含义理解他的作用?
搜索更多相关主题的帖子: void 函数 
2012-02-09 17:23
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
你查的什麼字典呀?util是“有用的”,utility的簡寫。這是這個程序員自己寫的一些小工具模塊。

[ 本帖最后由 TonyDeng 于 2012-2-9 18:03 编辑 ]

授人以渔,不授人以鱼。
2012-02-09 18:02
fenghelong
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
威 望:2
帖 子:209
专家分:197
注 册:2011-8-18
收藏
得分:0 
回复 楼主 有容就大
这应该是程序员自己写的一个模块,不过java中到是有这个包
2012-02-09 18:18
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-2-9 18:02:29的发言:

你查的什麼字典呀?util是“有用的”,utility的簡寫。這是這個程序員自己寫的一些小工具模塊。
哈哈,金山词霸。也不知是简写哪
老大,还有个问题.
下面是Util.c的代码:
程序代码:
#include  "Util.h"
#include  <stdio.h>

char  CharToLower( char ch )
{
    return ( ( ch >= 'A' ) && ( ch <= 'Z' )
             ? ch + 32 : ch );               // 原来的代码是ch - 32 我改成+应该没错吧,返回是小写啊。
}

char  GetCharInput( void )
{
    char re;

    //    获取一个输入,并确定它不是回车符
    while ( ( re = getchar() ) == 10 );

    //  清空缓存区
    while ( getchar() != 10 );

    //  统一返回小写
    return CharToLower( re );
}
我想梳理下GetCharInput()函数的流程,你看下我的理解有么问题;
输入字符a 回车 --> while ( ( re = getchar() ) == 10 );获取a,不是回车结束循环 ,回车留在缓冲区 -->
while ( getchar() != 10 ); 获取回车,条件为假结束循环 --> return CharToLower( re ); 返回小写。
如果真是这样,那么我感觉这个函数设计的太好了,都只用空语句就达到目的了。





梅尚程荀
马谭杨奚







                                                       
2012-02-09 18:38
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 3楼 fenghelong
嗯,我就是想知道他的意思,程序代码的变量和函数命名都是匈牙利法,可以望文知义。

梅尚程荀
马谭杨奚







                                                       
2012-02-09 18:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那只是跳過不需要的字符,是常用手法。另外,10是換行符,不是回車符。再說一遍:這種硬編碼編程風格(包括轉換大小寫那種方式),需要警惕!

授人以渔,不授人以鱼。
2012-02-09 18:58
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-2-9 18:58:02的发言:

那只是跳過不需要的字符,是常用手法。另外,10是換行符,不是回車符。再說一遍:這種硬編碼編程風格(包括轉換大小寫那種方式),需要警惕!
什么是硬编码编程?
网上有这样解释的:比如说,一个服务期端的程序,在执行时需要创建服务器进行侦听,你可以简单的将它需要侦听的端口号放在代码里面,也可以通过程序参数传入,也可以通过配置文件放置。
 
我理解不了他这个解释

还有匈牙利命名法,我看到好多代码都这样用。但是又有人强烈建议不要使用匈牙利命名法。说这坏的命名规范,特别对于C/C++. 我们该怎么取舍?

梅尚程荀
马谭杨奚







                                                       
2012-02-09 20:40
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
另外,10是換行符,不是回車符。

那么我们键入Enter 是传送了个\n 还是 \r ?

梅尚程荀
马谭杨奚







                                                       
2012-02-09 20:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
硬編碼,就是缺乏靈活性的程序代碼。比如那個大小寫轉換的代碼,假定大小寫字符內碼必定是間隔32的,這就是一種硬性規定,因為ASCII編碼確實是這樣,但要知道,世界上並非只有ASCII編碼,有些編碼(比如說自定義的協定編碼、密碼等)就不是這個規律,那麼,這種代碼就被稱為缺乏靈活性的。如果那個32不是硬性寫在代碼中,而是可以通過某種方式臨時改變的,那麼這種代碼就能應付變化了。因此,諸如用#define書寫某些常數之類的建議,就是為此提供一定靈活性的,如果常數變化,僅僅需要修改一處地方,而不用到處尋找程序代碼中使用32的地方逐個修改。

#define這樣做,還是嵌在程序代碼內部,經編譯後,仍然是死數,要修改,就得重新編譯、重新發佈程序。更靈活的手段,是通過外部指令臨時傳入,或者儲存在外部文件中讀入,這樣,只要修改外部文件就可以了,不用重新編譯程序。這種外部文件,就被稱為配置文件。比如Windows的行為,絕大多數就是通過外部配置文件改變,所以程序代碼本身不變,但隨著不同的配置設置而有不同的面貌和行為,就是這個原理。寫程序,就應該向這個方向努力,不能就題做題,寫一個排序的程序,只能排整數不能排浮點數以及各種不同類型的結構體(在C中就必須寫不同名稱的函數來區別不同的參數類型),那就悲催了。只能解決具體問題的程序,是沒有發展前途的,寫程序是為了一勞永逸,不是為了反復敲打鍵盤和訓練編碼技能。

匈牙利命名法是過時了,如果有C++的類作為前綴以及強類型檢查編譯器,無需再靠命名字符來識別變量的數據類型。


[ 本帖最后由 TonyDeng 于 2012-2-9 21:06 编辑 ]

授人以渔,不授人以鱼。
2012-02-09 20:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
鍵入Enter,getchar()函數內部把鍵碼轉換為'\n'返回,_getch()不轉換。而且返回的數據類型(int還是wchar_t),與函數的版本有關。getchar()和_getch()是ANSI版本的,處理單字節鍵碼,所以如果鍵入的是控制組合鍵,要調用兩次這些函數才能接收下來。

授人以渔,不授人以鱼。
2012-02-09 21:04
快速回复:关于Util的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053638 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved