| Conditions | 13 |
| Total Lines | 101 |
| Code Lines | 83 |
| 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:
Complex classes like GridNavRetriever.GridNavRetriever.getNavBlk() often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
| 1 | import os |
||
| 154 | def getNavBlk(self): |
||
| 155 | """ Sends ThriftClient request and writes out received files.""" |
||
| 156 | req = GetGridNavRequest() |
||
| 157 | req.setPluginName(self.pluginName) |
||
| 158 | req.setModelId(self.modelId) |
||
| 159 | resp = self.client.sendRequest(req) |
||
| 160 | |||
| 161 | for i, rec in enumerate(resp): |
||
| 162 | resp[i] = { |
||
| 163 | key.decode() if isinstance(key, bytes) else key: |
||
| 164 | val.decode() if isinstance(val, bytes) else val |
||
| 165 | for key, val in rec.items() |
||
| 166 | } |
||
| 167 | |||
| 168 | nav = [] |
||
| 169 | |||
| 170 | for record in resp: |
||
| 171 | unit = record['spacingunit'] |
||
| 172 | sk = record['spatialkey'] |
||
| 173 | skarr = sk.split('/') |
||
| 174 | |||
| 175 | nx = float(skarr[1]) |
||
| 176 | ny = float(skarr[2]) |
||
| 177 | dx = float(skarr[3]) |
||
| 178 | dy = float(skarr[4]) |
||
| 179 | |||
| 180 | sc = StringConverter() |
||
| 181 | if record['projtype'] == 'LatLon': |
||
| 182 | sc.char = 'CED ' |
||
| 183 | gemproj = 2.0 |
||
| 184 | ang1 = 0.0 |
||
| 185 | ang2 = 0.0 |
||
| 186 | ang3 = 0.0 |
||
| 187 | |||
| 188 | lllat = float(record['lowerleftlat']) |
||
| 189 | lllon = float(record['lowerleftlon']) |
||
| 190 | urlat = lllat + (dy * (ny-1)) |
||
| 191 | urlon = lllon + (dx * (nx-1)) |
||
| 192 | if lllon > 180: |
||
| 193 | lllon -= 360.0 |
||
| 194 | if urlon > 180: |
||
| 195 | urlon -= 360.0 |
||
| 196 | |||
| 197 | if record['projtype'] == 'Polar Stereographic': |
||
| 198 | sc.char = 'STR ' |
||
| 199 | gemproj = 2.0 |
||
| 200 | if float(record['standard_parallel_1']) < 0.0: |
||
| 201 | ang1 = -90.0 |
||
| 202 | nsflag = 'S' |
||
| 203 | else: |
||
| 204 | ang1 = 90.0 |
||
| 205 | nsflag = 'N' |
||
| 206 | ang2 = float(record['central_meridian']) |
||
| 207 | ang3 = 0.0 |
||
| 208 | |||
| 209 | lat1 = float(record['lowerleftlat']) |
||
| 210 | lon1 = float(record['lowerleftlon']) |
||
| 211 | coords = createPolar(nsflag, ang2, lat1, lon1, dx, dy, unit, nx, ny) |
||
| 212 | lllat = coords[0] |
||
| 213 | lllon = coords[1] |
||
| 214 | urlat = coords[2] |
||
| 215 | urlon = coords[3] |
||
| 216 | |||
| 217 | if record['projtype'] == 'Lambert Conformal': |
||
| 218 | sc.char = 'LCC ' |
||
| 219 | gemproj = 2.0 |
||
| 220 | |||
| 221 | ang1 = float(skarr[7]) |
||
| 222 | ang2 = float(record['central_meridian']) |
||
| 223 | ang3 = float(skarr[8]) |
||
| 224 | if ang1 < 0.0: |
||
| 225 | nsflag = 'S' |
||
| 226 | else: |
||
| 227 | nsflag = 'N' |
||
| 228 | |||
| 229 | lat1 = float(record['lowerleftlat']) |
||
| 230 | lon1 = float(record['lowerleftlon']) |
||
| 231 | coords = createConic(nsflag, ang2, lat1, lon1, dx, dy, unit, nx, ny, ang1, ang3) |
||
| 232 | lllat = coords[0] |
||
| 233 | lllon = coords[1] |
||
| 234 | urlat = coords[2] |
||
| 235 | urlon = coords[3] |
||
| 236 | |||
| 237 | # Fill up the output array of floats |
||
| 238 | nav.append(gemproj) |
||
| 239 | nav.append(sc.float) |
||
| 240 | nav.append(1.0) |
||
| 241 | nav.append(1.0) |
||
| 242 | nav.append(nx) |
||
| 243 | nav.append(ny) |
||
| 244 | nav.append(lllat) |
||
| 245 | nav.append(lllon) |
||
| 246 | nav.append(urlat) |
||
| 247 | nav.append(urlon) |
||
| 248 | nav.append(ang1) |
||
| 249 | nav.append(ang2) |
||
| 250 | nav.append(ang3) |
||
| 251 | |||
| 252 | for i in range(13, int(self.arrayLen)): |
||
| 253 | nav.append(0.0) |
||
| 254 | return nav |
||
| 255 | |||
| 302 |