[virt-tools-list] [PATCH virt-viewer 01/11] ovirt-foreign-menu: Rework states logic

Pavel Grunt pgrunt at redhat.com
Mon Jul 18 15:53:46 UTC 2016


On Mon, 2016-07-18 at 12:18 -0300, Eduardo Lima (Etrunko) wrote:
> On 07/18/2016 11:58 AM, Pavel Grunt wrote:
> > 
> > On Mon, 2016-07-18 at 10:22 -0300, Eduardo Lima (Etrunko) wrote:
> > > 
> > > On 07/18/2016 06:15 AM, Pavel Grunt wrote:
> > > > 
> > > > 
> > > > Hi Eduardo,
> > > > 
> > > > On Sun, 2016-07-17 at 23:13 -0300, Eduardo Lima (Etrunko) wrote:
> > > > > 
> > > > > 
> > > > > Use switch/case instead of lots of conditional blocks
> > > > Yes, it is more readable
> > > > > 
> > > > > 
> > > > > 
> > > > > Signed-off-by: Eduardo Lima (Etrunko) <etrunko at redhat.com>
> > > > > ---
> > > > >  src/ovirt-foreign-menu.c | 76 +++++++++++++++++++++++--------------
> > > > > ----
> > > > > ----
> > > > > ---
> > > > >  1 file changed, 36 insertions(+), 40 deletions(-)
> > > > > 
> > > > > diff --git a/src/ovirt-foreign-menu.c b/src/ovirt-foreign-menu.c
> > > > > index 33ff4f1..b0b8fec 100644
> > > > > --- a/src/ovirt-foreign-menu.c
> > > > > +++ b/src/ovirt-foreign-menu.c
> > > > > @@ -312,51 +312,47 @@
> > > > > ovirt_foreign_menu_next_async_step(OvirtForeignMenu
> > > > > *menu,
> > > > >      g_return_if_fail(current_state >= STATE_0);
> > > > >      g_return_if_fail(current_state < STATE_ISOS);
> > > > >  
> > > > > -    current_state++;
> > > > my preference is to keep the increment outside the switch statement
> > > > 
> > > > > 
> > > > > 
> > > > > -
> > > > > -    if (current_state == STATE_API) {
> > > > > -        if (menu->priv->api == NULL) {
> > > > > -            ovirt_foreign_menu_fetch_api_async(menu);
> > > > > -        } else {
> > > > > -            current_state++;
> > > > > +    switch (++current_state) {
> > > > Actually the increment is not needed at all thanks to your changes, imo
> > > > switch(current_state + 1) would be more readable
> > > 
> > > Alright, I don't mind at all.
> > > 
> > > > 
> > > > 
> > > > > 
> > > > > 
> > > > > +        case STATE_API: {
> > > > 'case' should have the same indentation as its 'switch'
> > > > 
> > > > Remove extra {}, no need to have the null check in the extra block
> > > > (applies
> > > > to
> > > > all cases)
> > > > 
> > > 
> > > I don't think so, the if checks are necessary for the initialization
> > > process, when we have everything initalized, it will fall straight to
> > > the STATE_ISOS case. Or maybe you are talking about something else and I
> > > misunderstood?
> > > 
> > 
> > the {} are not needed, but it is a minor:
> 
> The break statements are put inside of the conditional block on purpose.
yes, of course. I am not talking about break statements

> If the NULL check passes, the initialization is done asynchronously and
> that function will be responsible for calling back with the next step.
> If it fails, it means that it was already initialized, so we move to the
> next initialization, one at a time, until everything is set up and it
> will fall straight to the STATE_ISOS.
> 
> > 
> > ...
> >         case STATE_API:
> >             if (menu->priv->api == NULL) {
> >                 ovirt_foreign_menu_fetch_api_async(menu);
> >                 break;
> >             }
> >         case STATE_VM:
> >             if (menu->priv->vm == NULL) {
> >                 ovirt_foreign_menu_fetch_vm_async(menu);
> >                 break;
> >             }
> > ...
> > 

I tried to show it ^, but to be more explicit:

instead of
case A: {
  if () {
    break
  }
}

just
case A:
 if () {
   break
 }

But you have already changed it for v2 :)

Pavel
> > > 
> > > 
> 
> 




More information about the virt-tools-list mailing list