| Conditions | 4 | 
| Total Lines | 93 | 
| Code Lines | 30 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | # Copyright (C) 2019 NRL  | 
            ||
| 26 | def subsol(year, doy, utime):  | 
            ||
| 27 | """Finds subsolar geocentric longitude and latitude.  | 
            ||
| 28 | |||
| 29 | Parameters  | 
            ||
| 30 | ------------  | 
            ||
| 31 | year : (int)  | 
            ||
| 32 | Calendar year between 1601 and 2100  | 
            ||
| 33 | doy : (int)  | 
            ||
| 34 | Day of year between 1-365/366  | 
            ||
| 35 | utime : (float)  | 
            ||
| 36 | Seconds since midnight on the specified day  | 
            ||
| 37 | |||
| 38 | Returns  | 
            ||
| 39 | ---------  | 
            ||
| 40 | sbsllon : (float)  | 
            ||
| 41 | Subsolar longitude in degrees E for the given date/time  | 
            ||
| 42 | sbsllat : (float)  | 
            ||
| 43 | Subsolar latitude in degrees N for the given date/time  | 
            ||
| 44 | |||
| 45 | Notes  | 
            ||
| 46 | --------  | 
            ||
| 47 | Based on formulas in Astronomical Almanac for the year 1996, p. C24.  | 
            ||
| 48 | (U.S. Government Printing Office, 1994). Usable for years 1601-2100,  | 
            ||
| 49 | inclusive. According to the Almanac, results are good to at least 0.01  | 
            ||
| 50 | degree latitude and 0.025 degrees longitude between years 1950 and 2050.  | 
            ||
| 51 | Accuracy for other years has not been tested. Every day is assumed to have  | 
            ||
| 52 | exactly 86400 seconds; thus leap seconds that sometimes occur on December  | 
            ||
| 53 | 31 are ignored (their effect is below the accuracy threshold of the  | 
            ||
| 54 | algorithm).  | 
            ||
| 55 | After Fortran code by A. D. Richmond, NCAR. Translated from IDL  | 
            ||
| 56 | by K. Laundal.  | 
            ||
| 57 | |||
| 58 | """  | 
            ||
| 59 | warnings.warn(dep_str, category=FutureWarning)  | 
            ||
| 60 | |||
| 61 | # Convert from 4 digit year to 2 digit year  | 
            ||
| 62 | yr2 = year - 2000  | 
            ||
| 63 | |||
| 64 | if year >= 2101:  | 
            ||
| 65 |         aacgmv2.logger.error('subsol invalid after 2100. Input year is:', year) | 
            ||
| 66 | |||
| 67 | # Determine if this year is a leap year  | 
            ||
| 68 | nleap = np.floor((year - 1601) / 4)  | 
            ||
| 69 | nleap = nleap - 99  | 
            ||
| 70 | if year <= 1900:  | 
            ||
| 71 | if year <= 1600:  | 
            ||
| 72 |             print('subsol.py: subsol invalid before 1601. Input year is:', year) | 
            ||
| 73 | ncent = np.floor((year - 1601) / 100)  | 
            ||
| 74 | ncent = 3 - ncent  | 
            ||
| 75 | nleap = nleap + ncent  | 
            ||
| 76 | |||
| 77 | # Calculate some of the coefficients needed to deterimine the mean longitude  | 
            ||
| 78 | # of the sun and the mean anomaly  | 
            ||
| 79 | l_0 = -79.549 + (-0.238699 * (yr2 - 4 * nleap) + 3.08514e-2 * nleap)  | 
            ||
| 80 | g_0 = -2.472 + (-0.2558905 * (yr2 - 4 * nleap) - 3.79617e-2 * nleap)  | 
            ||
| 81 | |||
| 82 | # Days (including fraction) since 12 UT on January 1 of IYR2:  | 
            ||
| 83 | dfrac = (utime / 86400 - 1.5) + doy  | 
            ||
| 84 | |||
| 85 | # Mean longitude of Sun:  | 
            ||
| 86 | l_sun = l_0 + 0.9856474 * dfrac  | 
            ||
| 87 | |||
| 88 | # Mean anomaly:  | 
            ||
| 89 | grad = np.radians(g_0 + 0.9856003 * dfrac)  | 
            ||
| 90 | |||
| 91 | # Ecliptic longitude:  | 
            ||
| 92 | lmrad = np.radians(l_sun + 1.915 * np.sin(grad) + 0.020 * np.sin(2 * grad))  | 
            ||
| 93 | sinlm = np.sin(lmrad)  | 
            ||
| 94 | |||
| 95 | # Days (including fraction) since 12 UT on January 1 of 2000:  | 
            ||
| 96 | epoch_day = dfrac + 365.0 * yr2 + nleap  | 
            ||
| 97 | |||
| 98 | # Obliquity of ecliptic:  | 
            ||
| 99 | epsrad = np.radians(23.439 - 4.0e-7 * epoch_day)  | 
            ||
| 100 | |||
| 101 | # Right ascension:  | 
            ||
| 102 | alpha = np.degrees(np.arctan2(np.cos(epsrad) * sinlm, np.cos(lmrad)))  | 
            ||
| 103 | |||
| 104 | # Declination, which is the subsolar latitude:  | 
            ||
| 105 | sbsllat = np.degrees(np.arcsin(np.sin(epsrad) * sinlm))  | 
            ||
| 106 | |||
| 107 | # Equation of time (degrees):  | 
            ||
| 108 | etdeg = l_sun - alpha  | 
            ||
| 109 | etdeg = etdeg - 360.0 * np.round(etdeg / 360.0)  | 
            ||
| 110 | |||
| 111 | # Apparent time (degrees):  | 
            ||
| 112 | aptime = utime / 240.0 + etdeg # Earth rotates one degree every 240 s.  | 
            ||
| 113 | |||
| 114 | # Subsolar longitude:  | 
            ||
| 115 | sbsllon = 180.0 - aptime  | 
            ||
| 116 | sbsllon = sbsllon - 360.0 * np.round(sbsllon / 360.0)  | 
            ||
| 117 | |||
| 118 | return sbsllon, sbsllat  | 
            ||
| 119 | |||
| 209 |