The first step is to ensure you have a precise and accurate understanding
of the code before optimization. Right now, I am suspicious of at least 2
things in the code.

First, the function returns any of {None, -1, True}. While this is
certainly allowed, is this correct? If not, please correct the code. If so,
then can you explain the rule that governs the return type (assuming it is
not literally what is written).

Second, as your previous respond ant hinted, the first 2 lines look like an
optimisation attempt, except for the return type issue. Can you clarify if
the purpose of these lines is optimisation, or not?




On Thu, 21 Jul 2022, 06:53 Sencer Hamarat, <sencerhama...@gmail.com> wrote:

> Hi everyone,
>
> I have a code block with high cognitive complexity below:
>
>     @staticmethod
>     def in_circle_check(obj_type, item, uuid, item_is_array=False):
>
>         if obj_type not in ['trees', 'flowers']:
>             return None
>
>         plant = get_plant_with_circles(uuid)
>         if not plant:
>             return None
>
>         if obj_type == 'trees':
>             if plant['in_all_tree_types']:
>                 return True
>             circle_objects = plant['tree_circle']['items']
>         else:
>             if plant['in_all_flower_types']:
>                 return True
>             circle_objects = plant['flower_circle']['items']
>
>         if isinstance(circle_objects, list):
>             if item_is_array:
>                 for item in item:
>                     if item not in circle_objects:
>                         return -1
>                 return True
>             else:
>                 if item in circle_objects:
>                     return True
>         else:
>             return -1
>
>         return -1
>
>
> I try to move the first 3 if statements on the beginning of the block into
> new methods but that maneuver ends up with raising complexity.
>
> Can anybody help me to learn how to reduce cognitive complexity in code
> blocks like this?
>
> Kind regards,
> Sencer HAMARAT
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/CACp8TZhBa9EbekcT1ApmzdDRVk2vCb64%3DvvXHrSawO2RJSySpQ%40mail.gmail.com
> <https://groups.google.com/d/msgid/django-users/CACp8TZhBa9EbekcT1ApmzdDRVk2vCb64%3DvvXHrSawO2RJSySpQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAHAc2jewMaP41PJZN8OVFqZ2hw41A9r8c8DDjRJc0VG%3DqP9X5g%40mail.gmail.com.

Reply via email to