亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? preface.html

?? Writing Bug-Free C Code
?? HTML
字號:
<html><head><title>Writing Bug-Free C Code: Preface</title></head><body><center><font size="+3">Preface</font><br><a href="index.html">Writing Bug-Free C Code</a><br></center><br><center><table><tr><td valign=top><small><a href="#quickoverview">Quick Overview of the Book</a><br><a href="#howstarted">How It All Started</a><br><small></td><td width=30>&nbsp;</td><td valign=top><small><a href="#contactauthor">Contacting the Author</a><br><a href="#acknowledgments">Acknowledgments</a><br></small></td></tr></table></center><br><br><table width="100%" border=1 cellspacing=0 bgcolor="#FFFFE0"><tr><td><b>Note to this online book:</b>  On April 29, 2002, I reacquiredthe publishingrights to my book (from Prentice Hall; published in January 1995), and havedecided to publish it online, where it is now freely available foranyone to read.  The book is showing its age, but for people whostill program in C, the techniques described in thisbook are still a 'little gem' worth knowing about.  Enjoy! - <i>Jerry Jongerius</i>, <a href="mailto:jerryj@duckware.com">jerryj@duckware.com</a></td></tr></table><br>This book describes an alternate class methodology that provides complete data hiding and fault-tolerant run-time type checking of objects in C programs.  With it, you will produce code that contains fewer bugs. <br><br>The class methodology helps to prevent bugs by making it easier to write C code.  It does this by eliminating data structures (class declarations) from include files, which makes a project easier to understand (because there is not as much global information), which makes it easier to write C code, which helps to eliminate bugs.  This class methodology, which uses private class declarations, is different from C++, which uses public class declarations. <br><br>The class methodology helps detect bugs by providing for both compile-time and run-time type checking of pointers (handles) to class objects.  This run-time type checking catches a lot of bugs for you since invalid object handles (the cause of a lot of bugs) are automatically detected and reported. <br><br>We have all, at some point in our programming careers, spent several hours or days tracking down a particularly obscure bug in our code.  Have you ever stepped back and wondered how following a different programming methodology might have prevented such a bug from occurring or have automatically detected it?  Or have you tracked down the same type of bug several times?   <blockquote><table bgcolor="#E0E0E0" border=1 cellpadding=2 cellspacing=0><tr><td>   The key to eliminating bugs from your code is learning from your   mistakes.   </tr></td></table></blockquote>I have had my fair share of bugs, but when one does occur, I immediately try to institute a new programming methodology that helps prevent and/or automatically detect the bug.  That is what this book is all about.  It documents the techniques that I use to write virtually bug-free code.  You may not agree with 100 percent of the techniques I use and that is OK and only fair, since every programmer has his or her own style.  Where you do disagree, however, I challenge and urge you to come up with an alternate methodology that works for you.<br><a name="quickoverview"><br></a><big><b>Quick Overview of the Book</b></big> <br><br>The examples in this book were taken directly from a large production Windows application.  Because of this, some of the names you will find are tied to the environment in which the program resides.  However, I prefer to show you code taken directly from a real-life production application rather than code that has been made up simply because this book is being written. <br><br><a href="chapter1.html">"Understand Why Bugs Exist."</a> Chapter 1 explores why I think bugs exist in programs today.  This is the first step in writing bug-free code.  How can we hope to eliminate bugs from our code unless we understand how they come to exist? <br><br><a href="chapter2.html">"Know Your Environment."</a> In order to implement your own programming methodologies that detect bugs, it is important to fully understand your programming environment.  Chapter 2 examines the C language and preprocessor in an attempt to show you something new about your programming environment, even if you have been programming in C for many years.  For example, did you know that <tt>buffer[nIndex]</tt> is equivalent to <tt>nIndex[buffer]</tt>?  Chapter 2 also contains a few programming puzzles to get you thinking about your programming environment. <br><br><a href="chapter3.html">"Rock-Solid Base."</a> Chapter 3 stresses the importance of coding upon a rock-solid base.  Without a bug-free base to code upon, how can you be expected to write bug-free code?  Chapter 3 suggests what should be done. <br><br><a href="chapter4.html">"The Class Methodology."</a> The class methodology is the key to writing bug-free code and is described in Chapter 4.  The class methodology allows complete data hiding and fault-tolerant run-time type checking of objects in C.  It accomplishes complete data hiding by moving data declarations out of include files and into the one source file that needs the declaration (very much unlike the public class declarations in C++).  The breakthrough to this class methodology is that pointers (handles) to objects of a class can be type checked by the compiler in other source files that use the class but do not have access to the data declaration. <br><br><a href="chapter5.html">"A New Heap Manager."</a> The heap manager that comes with C does not detect programmer bugs.  Chapter 5 shows how to create a heap manager that is rock-solid.  In addition, the heap manager is needed to support the class methodology. <br><br><a href="chapter6.html">"Designing Modules."</a> Now that everything is in place for writing bug-free code, how should a module be designed?  Chapter 6 shows that the key to designing and coding modules is to always code what to do, not how to do it. <br><br><a href="chapter7.html">"General Tips."</a> Chapter 7 contains a variety of tips for writing bug-free code.  For example, a key to writing bug-free code is learning from your mistakes.  Also, designing stack trace support into an application allows you to track down problems without having to reproduce the problem. <br><br><a href="chapter8.html">"Style Guide."</a> Chapter 8 describes the style that I use to write C code.  While every programmer has his or her own way of coding, I feel it is important that a style guide exist in written form. <br><br><a href="chapter9.html">"Conclusion."</a> Chapter 9 contains concluding remarks.  The class methodology and run-time type checking are key features presented in this book. <br><br><a href="appendix.html">"Code Listings."</a> This appendix brings together all the code presented in the book into one convenient location.<br><a name="howstarted"><br></a><big><b>How It All Started</b></big> <br><br>It all started when I was a sophomore in high school.  Back then, I was introduced to an Apple II computer and was completely amazed by what the computer could do.  The Apple had great graphics with plenty of games and educational software.  I began to wonder how all the magic was accomplished. <br><br>It wasn't long before I wrote my first BASIC program.  Shortly thereafter, however, I encountered my first bug.  The only tools and resources available were the computer, the computer manuals and myself.  Those were trying times.  It taught me to think things through before jumping into coding. <br><br>In my probing around into how the computer worked, I quickly came across something called assembly language and the command CALL -151 (the equivalent of DEBUG for the PC, but in the Apple II ROM).  The speed at which programs executed in relation to BASIC was remarkable.  At that time, all my assembly language programming was done by hand.  The assembly program was entered by typing in the hex digits of the opcode and operands.  To this day I still remember a lot of opcodes even though I have not coded in 6502 assembly for many years.  I quickly realized the benefits of designing a piece of code before writing it because making any changes essentially meant rewriting the entire assembly program.  Later, I purchased an assembler. <br><br>My quest for finding out how the computer worked has never ended.  I disassembled (reverse engineered) and commented the entire Apple II Disk Operating System (DOS 3.3 at that time), the bootstrap ROMs and parts of the BASIC interpreter ROMs.  I started writing programs that performed disk protection, added keyboard buffers, and so on -- in other words, systems programming. <br><br>Today, I am working on an 80486 66-MHz DX2 with 32 megabytes of memory, local bus video and 600 megabytes of hard disk space -- quite a change from a 1-MHz, 64 kilobytes of memory, 140-kilobyte floppy disk drive Apple II.  The hardware has changed drastically, but the methodologies used to write programs haven't changed as fast.  The quality of code certainly hasn't improved by several orders of magnitude. <br><br>After college, I started working at Datametrics Systems Corporation, a firm specializing in the performance of Unisys mainframes.  Their goal was to produce a top-of-the-line performance monitoring package that ran under Microsoft Windows.  A year later, that goal was realized with the release of ViewPoint 1.0.  ViewPoint as it stands today is now approximately a quarter million lines of code and very stable. <br><br>ViewPoint originally started out under Windows 1.0.  Shortly thereafter, Windows 2.0 was released.  Since then, Windows 3.0 and now Windows 3.1 have become mega hits in the PC industry. <br><br>The great thing about Windows 3.0 was that programming bugs could be caught much quicker than before because programming errors caused a general protection fault instead of just trashing memory and more than likely hanging the PC.  This is because under pre-3.0 Windows, programs had full access to all the memory in the PC, even memory of other processes.  So a bug could trash anything and usually would.  Windows 3.0 supported protected address spaces.  Therefore, an access to a random memory location most likely would be detected (the infamous UAE, Unrecoverable Application Error) by the operating system and your program halted. <br><br>When I converted ViewPoint to Windows 3.0, it ran the first time.  The protected-mode architecture turned up no programming bugs, not a single one!  In fact, the ViewPoint 1.0 binary, which was targeted to Windows 2.0, a non-protected OS, can still be run under Windows 3.1, a protected OS, without any problems.  This indicates that the program contains no invalid memory references and indicated to me that the programming methodologies that were used to write ViewPoint are valid. <br><br>In the last few years, the programming industry has moved from procedural programming to object-oriented programming (OOP).  However, OOP alone does not solve the underlying quality control problems facing the industry.  OOP alone does not make you a better programmer. <br><br>I wrote this book to document the programming methodologies that I have used to write ViewPoint under Windows.  The methodologies were designed and developed using Microsoft C5 through C8.  Since the introduction of Microsoft C/C++ 7.0, the code has been ported to compile under C++.<br><a name="contactauthor"><br></a><big><b>Contacting the Author</b></big> <br><br>If you have any comments on this book, I would like to hear them.  I can be reached through the Internet at <a href="mailto:jerryj@duckware.com">jerryj@duckware.com</a>.<br><a name="acknowledgments"><br></a><big><b>Acknowledgments</b></big> <br><br>Special thanks to P.J. Plauger for taking the time to listen to a first-time book author.  Your help is greatly appreciated and invaluable. <br><br>I would like to thank everyone at Prentice Hall who helped to make this book a reality, especially Paul W. Becker and Patti Guerrieri. <br><br>Thanks to John Kelly, the president of Datametrics Systems Corporation, for allowing me to write a book that discloses the programming techniques that I developed at Datametrics Systems Corporation. <br><br>Thanks to Jim Kelliher, who provided feedback throughout the entire book writing process.  Thanks to John McGowan, who provided feedback on the class methodology.  Thanks to John Dripps, who helped during the early stages.<br><br><hr><center><small>Copyright &copy; 1993-1995, 2002-2003 Jerry Jongerius<br>This book was previously published by Person Education, Inc.,<br>formerly known as Prentice Hall. ISBN: 0-13-183898-9<br></small></center></html></body> 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本免费一区二区三区| 中文字幕亚洲在| 中文字幕国产一区| 丝袜美腿亚洲综合| av高清久久久| 日韩美一区二区三区| 亚洲一区二区三区激情| 国产精品亚洲а∨天堂免在线| 在线视频欧美区| 欧美激情在线观看视频免费| 蜜臀av一区二区在线免费观看| 99精品国产91久久久久久| 亚洲精品一区二区精华| 天堂成人免费av电影一区| 一本一本大道香蕉久在线精品| 久久女同性恋中文字幕| 麻豆精品新av中文字幕| 欧美一区二区性放荡片| 亚洲成年人影院| 91福利区一区二区三区| 国产精品不卡视频| 成人精品高清在线| 欧美激情一区二区在线| 国产精品自产自拍| 精品sm在线观看| 精品亚洲aⅴ乱码一区二区三区| 欧美一区二区三区在| 亚洲gay无套男同| 欧美高清视频一二三区| 亚洲18女电影在线观看| 欧美日韩国产精品自在自线| 亚洲国产人成综合网站| 欧美写真视频网站| 午夜欧美电影在线观看| 欧美日韩一区中文字幕| 亚洲影院在线观看| 欧美日韩国产片| 日韩国产欧美三级| 日韩欧美国产一区在线观看| 免费看欧美女人艹b| 欧美大黄免费观看| 国产精品一级在线| 中文欧美字幕免费| 99国产精品久| 亚洲一区在线视频观看| 欧美日韩国产一级二级| 久久国产生活片100| 26uuu久久天堂性欧美| 粉嫩av亚洲一区二区图片| 国产精品日产欧美久久久久| 91视视频在线观看入口直接观看www | 亚洲777理论| 欧美精品亚洲二区| 毛片基地黄久久久久久天堂| 精品久久久久香蕉网| 大胆欧美人体老妇| 亚洲综合免费观看高清在线观看| 欧美剧情片在线观看| 久久精品国产精品亚洲精品| 国产蜜臀97一区二区三区| 色94色欧美sute亚洲线路一久| 性久久久久久久| www欧美成人18+| 91麻豆国产精品久久| 日韩国产精品久久久久久亚洲| 久久久夜色精品亚洲| av一本久道久久综合久久鬼色| 一区二区三区电影在线播| 91精品国产色综合久久不卡蜜臀 | 亚洲丶国产丶欧美一区二区三区| 日韩一区二区电影| 成人av资源网站| 丝袜美腿成人在线| 亚洲黄网站在线观看| 欧美丰满美乳xxx高潮www| 高清成人在线观看| 天堂在线一区二区| 中文字幕永久在线不卡| 欧美一区二区久久| av中文字幕不卡| 久久精品免费观看| 亚洲伊人色欲综合网| 中文字幕精品一区| 日韩精品中午字幕| 欧美天堂一区二区三区| 国产白丝网站精品污在线入口| 亚洲成精国产精品女| 国产精品动漫网站| 久久综合色婷婷| 欧美一区二区二区| 91福利在线免费观看| 成人av电影在线播放| 寂寞少妇一区二区三区| 天天影视涩香欲综合网| 亚洲精品五月天| 国产精品久久影院| 国产欧美一区二区精品久导航| 69p69国产精品| 欧美色视频一区| 色欧美乱欧美15图片| 国产大片一区二区| 国产一区日韩二区欧美三区| 日韩国产一二三区| 日本系列欧美系列| 性做久久久久久久久| 一区二区三区四区乱视频| 国产精品你懂的| 国产精品免费av| 国产亚洲精品aa| 国产日韩欧美亚洲| 国产视频亚洲色图| 国产三级三级三级精品8ⅰ区| 亚洲精品一区在线观看| 久久夜色精品一区| 久久毛片高清国产| 久久久久成人黄色影片| 久久久欧美精品sm网站| 久久日一线二线三线suv| 久久久久九九视频| 亚洲国产精品精华液2区45| 欧美国产国产综合| 中文字幕一区二区三| 亚洲欧美在线视频观看| 亚洲精品videosex极品| 亚洲制服欧美中文字幕中文字幕| 亚洲国产成人tv| 日韩国产欧美视频| 国产麻豆成人传媒免费观看| 国产大陆精品国产| 91福利视频网站| 9191精品国产综合久久久久久| 日韩欧美一区二区视频| xfplay精品久久| 亚洲视频网在线直播| 一区二区激情视频| 美脚の诱脚舐め脚责91 | 日韩精品一区在线| 久久夜色精品一区| 亚洲欧洲在线观看av| 亚洲一区av在线| 狠狠色综合日日| 成人sese在线| 欧美精品久久久久久久多人混战| 日韩精品一区二区三区老鸭窝| 国产日韩视频一区二区三区| 亚洲欧美日韩在线不卡| 日韩电影免费一区| 欧美精品免费视频| 日韩午夜在线观看视频| 国产精品网站一区| 午夜天堂影视香蕉久久| 国产成人在线看| 欧美在线观看你懂的| 2022国产精品视频| 一级精品视频在线观看宜春院 | 激情成人综合网| 色综合久久久久网| 精品美女被调教视频大全网站| 国产精品毛片a∨一区二区三区| 亚洲动漫第一页| 成人综合婷婷国产精品久久蜜臀| 欧美三级电影一区| 亚洲国产经典视频| 七七婷婷婷婷精品国产| 99re在线视频这里只有精品| 日韩欧美电影一区| 亚洲午夜电影网| 国产aⅴ综合色| 日韩欧美一二三| 亚洲一区二区三区精品在线| 成人av在线一区二区三区| 欧美成va人片在线观看| 一区二区三区蜜桃网| 成人精品免费视频| 亚洲精品一区二区三区99| 亚洲高清一区二区三区| 99精品久久久久久| 国产免费成人在线视频| 精久久久久久久久久久| 在线综合视频播放| 一区二区高清免费观看影视大全 | 蜜桃一区二区三区四区| 欧美做爰猛烈大尺度电影无法无天| 国产亚洲精品bt天堂精选| 日本高清不卡在线观看| 国产精品毛片高清在线完整版 | 成人黄页毛片网站| 337p粉嫩大胆色噜噜噜噜亚洲| 日日夜夜精品视频天天综合网| 日本道色综合久久| 亚洲视频在线观看一区| 成人午夜电影久久影院| 国产欧美一区二区精品性色| 久久电影网站中文字幕| 日韩美女天天操| 久草在线在线精品观看| 久久综合久久99| 国产精品乡下勾搭老头1| 国产视频一区在线播放| 处破女av一区二区|