Re: Fwd: Compiler Guided Refactoring.

J Arrizza <[email protected]> Mon, 8 Jul 2013 15:54:17 -0700
Newsgroups gmane.comp.programming.refactoring
Message-ID <CAEyOLyAxE0+LuM-De3tiA5gZY07QRJ7hUFD617ibEEL=V9M7xQ@mail.gmail.com>
On Mon, Jul 8, 2013 at 3:02 PM, John Carter <[email protected]>wrot=
e:

> **
>
>
> > The key aspect to the Extract Method with no arguments and void return
> > value (i.e. void-void extraction) is that it minimizes the risk of
> > introducing side-effects.
>
> That is what appeals to me most about it....
>
> However, it is steps a largish notch away from the idea... ie. Tweaking
> the Declarations to Tighten the constraints enforced by the compiler.
>
I see, so the code is that critical... You're looking for absolutely no
change in the generated executable but still refactorings on the source.

> ie. Your void-void is low risk, provided the person doing the refactoring
> doesn't,,,
> * accidentally reorder something,
> * drop a step,
> * or extract copypasta into a single method that isn't copypasta but
> copypasta and tiny easily missed tweak.
>
> :) copy and pasta, had it for supper last night.

I wonder if there is any way of doing a reliable cross check, or a variant
> of this, or a way of injecting additional steps to increase safety.
>
> So clearly UTs are not available. What about Pair Programming? Or code
review after a small set of changes?
On the other hand, if the code is as critical as it seems to be, even those
won't guarantee no changes in the executable.

Hmm. It might need an additional check, gcc will always inline something
> like that so could diff the disassembly output.
>
Sure, it could be used in lieu of UTs:
- If the disassembly output matches, then all is well.
- If they don't match, then a quick review of the disassembly output and
the source to see why the mismatch. A mismatch might still be acceptable,
right??

On the bright side... you might find a compiler bug.


> On Sun, Jul 7, 2013 at 5:31 AM, J Arrizza <[email protected]> wrote:
>
> > The key aspect to the Extract Method with no arguments and void return
> > value (i.e. void-void extraction) is that it minimizes the risk of
> > introducing side-effects.
> >
> > The conversion of the function parameters to consts is slightly
> different,
> > its purpose is to highlight the fact that the function won't introduce =
a
> > side-effect via those parameters.
>
> >
> > Further to this, one additional refactoring I've used is Rename Variabl=
e
> to
> > add a "g" prefix to all global variables. I personally don't like
> hungarian
> > notation but adding the "g" is a very useful exception to this rule. Al=
l
> > the globals show up clearly in the code.
> >
> > One other way to achieve this is to put all globals into a single struc=
t
> > called "globals". Then all uses show up as "globals.some_variable" whic=
h
> > makes it very clear that there is a global side-effect in that part of
> the
> > code. But note the compiler may generate more code for this technique.
> >
> > John
>
> >
> >
> >
> > On Thu, Jul 4, 2013 at 3:28 PM, J Arrizza <[email protected]> wrote:
> >
> > > On Thu, Jul 4, 2013 at 7:27 AM, Richard <[email protected]> wrote=
:
> > >
> > >> **
> > >>
> > >> n article <
> > >> CAEyOLyBfwH6uD6Z5RxBmmne4NA90cpF6N6LGacJPmRTSz7Enyg@mail.gmail.com>,
>
> > >> J Arrizza <[email protected]> writes:
> > >>
> > >> > is. IMO the biggest bang for buck is the void-void extraction.
> > >>
> > >> This is Extract Method/Extract Function with no arguments
> > >>
> > > ... and void return value.
> > >
> > >> > The next best is the void-const extraction.
> > >>
> > >
> > >> This is Extract Method/Extract Function with arguments
> > >>
> > > ... and void return value and all the arguments are const.
> > >
> > >>
> > >> I think it's important to use the established names for well known
> > >> refactorings for clear communication.
> > >>
> > > Absolutely.
> > >
> > >>
> > >>
> > >>
> > >> Start a New Topic<
> >
> http://groups.yahoo.com/group/refactoring/post;_ylc=3DX3oDMTJlazgzdWgyBF9=
TAzk3MzU5NzE0BGdycElkAzM5NzU2MDIEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA2=
50cGMEc3RpbWUDMTM3Mjk0ODA2Ng--
> >
> > Messages
> > >> in this topic<
> >
> http://groups.yahoo.com/group/refactoring/message/10661;_ylc=3DX3oDMTM2dT=
Y1ZDY3BF9TAzk3MzU5NzE0BGdycElkAzM5NzU2MDIEZ3Jwc3BJZAMxNzA3Mjc2NzE4BG1zZ0lkA=
zEwNjY0BHNlYwNmdHIEc2xrA3Z0cGMEc3RpbWUDMTM3Mjk0ODA2NgR0cGNJZAMxMDY2MQ--
> > >(4)
> > >> Recent Activity:
> > >>
> > >>
> > >> Visit Your Group<
> >
> http://groups.yahoo.com/group/refactoring;_ylc=3DX3oDMTJlOW1ucG5jBF9TAzk3=
MzU5NzE0BGdycElkAzM5NzU2MDIEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwN2dGwEc2xrA3ZnaHA=
Ec3RpbWUDMTM3Mjk0ODA2Ng--
> > >
> > >> [image: Yahoo! Groups]<
> >
> http://groups.yahoo.com/;_ylc=3DX3oDMTJkbWt0N2dqBF9TAzk3MzU5NzE0BGdycElkA=
zM5NzU2MDIEZ3Jwc3BJZAMxNzA3Mjc2NzE4BHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMzcyOTQ4=
MDY2
> > >
> > >> Switch to: Text-Only<
> > [email protected]
> ?subject=3DChange+Delivery+Format:+Traditional
> > >,
> > >> Daily Digest<
> > [email protected]?subject=3DEmail+Delivery:+Digest>=95
> > >> Unsubscribe <
> > [email protected]?subject=3DUnsubscribe>=95 Terms
> > >> of Use <http://docs.yahoo.com/info/terms/> =95 Send us Feedback
> > >> <
> > [email protected]
> ?subject=3DFeedback+on+the+redesigned+individual+mail+v1
> > >
> > >> .
> > >>
> > >>
> > >>
> > >
> > >
> >
> >
> > [Non-text portions of this message have been removed]
> >
> >
> >
> > ------------------------------------
> >
> > Yahoo! Groups Links
> >
> >
> >
> >
>
> --
> John Carter Phone : (64)(3) 358 6639
> Tait Electronics Fax : (64)(3) 359 4632
> PO Box 1645 Christchurch Email : [email protected]
> New Zealand
>
> --
>
> ------------------------------
> This email, including any attachments, is only for the intended recipient=
.
> It is subject to copyright, is confidential and may be the subject of
> legal
> or other privilege, none of which is waived or lost by reason of this
> transmission.
> If you are not an intended recipient, you may not use, disseminate,
> distribute or reproduce such email, any attachments, or any part thereof.
> If you have received a message in error, please notify the sender
> immediately and erase all copies of the message and any attachments.
> Unfortunately, we cannot warrant that the email has not been altered or
> corrupted during transmission nor can we guarantee that any email or any
> attachments are free from computer viruses or other conditions which may
> damage or interfere with recipient data, hardware or software. The
> recipient relies upon its own procedures and assumes all risk of use and
> of
> opening any attachments.
> ------------------------------
>
>
> [Non-text portions of this message have been removed]
>
>=20=20
>


[Non-text portions of this message have been removed]



------------------------------------

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/refactoring/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/refactoring/join
    (Yahoo! ID required)

<*> To change settings via email:
    [email protected]=20
    [email protected]

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/