45 2729
In <bq********@net news.proxy.luce nt.com> Ed Morton <mo************ ****@lucent.com > writes: falls outside it or pushes the existing code outside of it. That's a very common bug when modifying code that doesn't use braces on every loop and "if". There's been so many times I've seen something like this:
if (x) y();
get changed to:
if (x) y(); z();
That's the kind of mistake one is not very likely to repeat, after getting
burned once. So, there is no need to resort to braces in order to avoid
it.
Dan
--
Dan Pop
DESY Zeuthen, RZ group
Email: Da*****@ifh.de
Dan Pop wrote: In <bq********@net news.proxy.luce nt.com> Ed Morton <mo************ ****@lucent.com > writes:
falls outside it or pushes the existing code outside of it. That's a very common bug when modifying code that doesn't use braces on every loop and "if". There's been so many times I've seen something like this:
if (x) y();
get changed to:
if (x) y(); z();
That's the kind of mistake one is not very likely to repeat, after getting burned once. So, there is no need to resort to braces in order to avoid it.
I agree it's not a mistake that one person will make many times, but
it's a mistake that many people will make once, so it is still desirable
to use braces. Typing those couple of extra characters is no big deal
and is well worth the extra second or so of typing if it can avoid a
future bug being introduced. It also removes much of the need for using
"do { ... } while(0)" in compound-statement macros (though, to be
honest, I do that too since my macros are often used in other peoples code).
Ed.
Dan
On 4 Dec 2003 15:56:35 GMT, Da*****@cern.ch (Dan Pop) wrote: In <bq********@net news.proxy.luce nt.com> Ed Morton <mo************ ****@lucent.com > writes:
falls outside it or pushes the existing code outside of it. That's a very common bug when modifying code that doesn't use braces on every loop and "if". There's been so many times I've seen something like this:
if (x) y();
get changed to:
if (x) y(); z();
That's the kind of mistake one is not very likely to repeat, after getting burned once. So, there is no need to resort to braces in order to avoid it.
Dan
The problem is that for real software products, maintained over a
number of years, it's not "one", but many.
--
Al Balmer
Balmer Consulting re************* ***********@att .net
In <4d************ *************** *****@4ax.com> Alan Balmer <al******@att.n et> writes: On 4 Dec 2003 15:56:35 GMT, Da*****@cern.ch (Dan Pop) wrote:
In <bq********@net news.proxy.luce nt.com> Ed Morton <mo************ ****@lucent.com > writes:
falls outside it or pushes the existing code outside of it. That's a very common bug when modifying code that doesn't use braces on every loop and "if". There's been so many times I've seen something like this:
if (x) y();
get changed to:
if (x) y(); z();
That's the kind of mistake one is not very likely to repeat, after getting burned once. So, there is no need to resort to braces in order to avoid it.
Dan
The problem is that for real software products, maintained over a number of years, it's not "one", but many.
People who maintain software don't actually test the changes they make?
If I change a bit of code, it is because I want to alter its behaviour.
The next thing after doing it is testing it, to see if I got it right.
And if I didn't get it right, I find my bug(s) and fix the code.
Do I have some weird ideas about what software maintenance means?
Dan
--
Dan Pop
DESY Zeuthen, RZ group
Email: Da*****@ifh.de
On 12/4/2003 12:42 PM, Dan Pop wrote:
<snip> People who maintain software don't actually test the changes they make?
If I change a bit of code, it is because I want to alter its behaviour. The next thing after doing it is testing it, to see if I got it right. And if I didn't get it right, I find my bug(s) and fix the code.
Do I have some weird ideas about what software maintenance means?
Only if you think that any of the following is true:
a) There's no cost associated with finding a bug, fixing it, and retesting.
b) During developer-testing, every developer catches every bug they introduced.
c) All software can be tested thoroughly in a cheap development environment
(e.g. off the potentially expensive production hardware).
Ed.
In article <bq********@net news.proxy.luce nt.com>,
Ed Morton <mo************ ****@lucent.com > wrote: There's been so many times I've seen something like this:
if (x) y();
get changed to:
if (x) y(); z();
Are you teaching courses "C for talentless beginners" ?
I cannot remember seeing that mistake being made in twenty years.
Christian Bau wrote: In article <bq********@net news.proxy.luce nt.com>, Ed Morton <mo************ ****@lucent.com > wrote:
There's been so many times I've seen something like this:
if (x) y();
get changed to:
if (x) y(); z();
Are you teaching courses "C for talentless beginners" ?
No, I teach behavioral modeling, but I do inspect a lot of code written
by people with less experience.
I cannot remember seeing that mistake being made in twenty years.
Then you've been incredibly fortunate or don't get to inspect a lot of
code written by relative newcomers or have missed many mistakes.
Ed.
Ed Morton <mo************ ****@lucent.com > wrote in message news:<bq******* *@netnews.proxy .lucent.com>...
First: I did appreciate your words and your taking the time to rerun
the program. Sorry if I sounded irritable. No. It was the loop termination condition that was the hardest to understand. I don't mean I can't read the C, I just don't know what the abstraction is for the C (i.e. what it "means").
The program does have a few comments, including one immediately
before the for statement you snipped: /* Loop to play tricks forward until the outcome is conclusive */ for (tnum = won = success = 0; success ? ++won < need : won + ohsize >= need + tnum; tnum++, P++, success = IS_CONT(pwin)) {
I assumed an understanding of whist and game search -- the loop
terminates when it is known either that contract will succeed or
won't succeed (and "success" will tell you which.)
I was wrong, it doesn't hang. It does just take a few minutes.
To change the subject, I was pretty sure the program would
run the 2nd input if it could run the 1st. Why? *Because it doesn't
rely on anything.* Some programs have code like
foogle_gark(Can onPrinter, DVI_Level17, REV14_3);
/* remember to ask Tony if we need to change this for
* Rev 14.4 (when line speed exceeds BAUDLIMIT_39) */
My program depended only on printf(), etc. which haven't changed
since the Pleistocene. And even the cheapest cell phone today
has enough memory to run it. When someone demonstrates a working program almost as efficient and more readable than mine, I'll "eat my hat."
Well, if you decomposed what you have into a few small functions (with their own local variables ...)
Studying the program I believe you'll find that to be undoable.
You'll either need lots of global variables, or unwieldy state-
passing in both directions.
Until then, your words are just idle pedantry.
You can dismiss my comments if you like, but I wasn't pedantic about anything. I didn't say anything like "this code uses goto and therefore is bad" I said "This code is hard to read, and here's some examples of why".
I apologize. My point was very badly phrased and, anyway, directed
more at another poster who over-generalized. I stand by my essential
point: My 200-line program is harder to read than a 500-line program,
but many programmers would construct a 2000-line solution if they could
do it all. Let's wait till the alternative is on display before
declaring it more readable.
James
In <3F************ **@lucent.com> Ed Morton <mo************ ****@lucent.com > writes: On 12/4/2003 12:42 PM, Dan Pop wrote: <snip> People who maintain software don't actually test the changes they make?
If I change a bit of code, it is because I want to alter its behaviour. The next thing after doing it is testing it, to see if I got it right. And if I didn't get it right, I find my bug(s) and fix the code.
Do I have some weird ideas about what software maintenance means?
Only if you think that any of the following is true:
a) There's no cost associated with finding a bug, fixing it, and retesting. b) During developer-testing, every developer catches every bug they introduced. c) All software can be tested thoroughly in a cheap development environment (e.g. off the potentially expensive production hardware).
You're ignoring the punctual nature of the issue. There is no need to
perform a full retesting of the application, only the correctness of the
changes made needs to be tested, and this is, usually, far easier.
Anyone who changes the code and doesn't test his changes should be
kicked out of this profession.
Dan
--
Dan Pop
DESY Zeuthen, RZ group
Email: Da*****@ifh.de
Dan Pop wrote: In <3F************ **@lucent.com> Ed Morton <mo************ ****@lucent.com > writes: On 12/4/2003 12:42 PM, Dan Pop wrote: <snip>
<snip>Do I have some weird ideas about what software maintenance means? Only if you think that any of the following is true:
a) There's no cost associated with finding a bug, fixing it, and retesting. b) During developer-testing, every developer catches every bug they introduced. c) All software can be tested thoroughly in a cheap development environment (e.g. off the potentially expensive production hardware).
You're ignoring the punctual nature of the issue.
Not at all.
There is no need to perform a full retesting of the application, only the correctness of the changes made needs to be tested, and this is, usually, far easier.
Of course rerunning one or 2 tests is easier/cheaper than retesting the
whole code. No-one suggested otherwise.
Anyone who changes the code and doesn't test his changes should be kicked out of this profession.
s/should/will but that also has nothing whatsoever to do with anything I
said.
Ed.
Dan This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: BOOGIEMAN |
last post by:
I've just finished reading Python turtorial for non-programmers
and I haven't found there anything about some usefull commands I used in
QBasic. First of all, what's Python command equivalent to QBasic's "goto" ?
Secondly, how do I clear screen (cls) from text and other content ?
And last, how do I put program to wait certain amount of seconds ?
If I remeber correctly I used to type "Wait 10" and QBasic waits
10 seconds before proceeding...
|
by: Michael |
last post by:
Hi,
I know I know its notoriously bad! I don't want to use it. I was wondering,
does it still exist? If it does, I really don't understand how!? like what
happens if you just goto halfway through a function (no objects properly
constructed!) , or a constructor itself??
Just intrigued!!
Mike
|
by: deko |
last post by:
I've heard it said that you only want to use a number (e.g. integer, long, etc.)
if you are going to do calculations or some kind of math with it. Is this true?
For example, I run a validate routine that checks an address entry - if
something's missing in the entry, the code does different things based on what
is missing, indicated my a 2 or a 3 - integer values. Should I use string data
types here? Does it matter?
Public Sub...
|
by: WindAndWaves |
last post by:
Can anyone tell me what is wrong with the goto command. I noticed it is one
of those NEVER USE.
I can understand that it may lead to confusing code, but I often use it like
this:
is this wrong?????
Function x
select case z
|
by: Mike Hofer |
last post by:
While I'd toyed with C, C++, and Java over the last 20 years or so, my
principal language has been BASIC, QBASIC, then Visual Basic, and
finally Visual Basic .NET. But lately, I've been using C# and I
absolutely *love* it. It makes me think more about what I'm doing it
before I just spew code into the editor. I'm writing better code than
ever.
The only thing so far that I don't like about it is the switch
construct. I can't do this:
| |
by: M.B |
last post by:
Guys,
Need some of your opinion on an oft beaten track
We have an option of using "goto" in C language, but most testbooks
(even K&R) advice against use of it.
My personal experience was that goto sometimes makes program some more
cleaner and easy to understand and also quite useful (in error handling
cases).
So why goto is outlawed from civilized c programmers community.
is there any technical inefficiency in that.
|
by: cat |
last post by:
I had a long and heated discussion with other developers on my team on when
it makes sense to throw an exception and when to use an alternate solution.
The .NET documentation recommends that an exception should be thrown only in
exceptional situations. It turned out that each of my colleagues had their
own interpretation about what an "exceptional situation" may actually be.
First of all, myself I’m against using exceptions extensively,...
|
by: electrician |
last post by:
Perl has it, Basic has it, Fortran has it. What is so difficult about
creating a goto command for JavaScript. Just set up a label and say go
to it.
|
by: raashid bhatt |
last post by:
why are GOTO's not used they just a simple JMP instructions what's bad
about them
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look !
Part I. Meaning of...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
| |
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth.
The Art of Business Website Design
Your website is...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms.
Adolph will...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...
| |