about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKyle <40903431+kylepw@users.noreply.github.com>2019-08-02 06:49:01 +0900
committerSergey M <dstftw@gmail.com>2019-08-02 04:49:01 +0700
commit07f3a05c87619d01c195cad8cd57ec72291ad78d (patch)
tree0e72af77fa8ffa77bac1fd1de7e69145ecc01083
parent535111657b507d4f4454160aaf2587e7ce6b9936 (diff)
downloadyoutube-dl-07f3a05c87619d01c195cad8cd57ec72291ad78d.tar.gz
youtube-dl-07f3a05c87619d01c195cad8cd57ec72291ad78d.tar.xz
youtube-dl-07f3a05c87619d01c195cad8cd57ec72291ad78d.zip
[CONTRIBUTING.md] Add some more coding conventions (#21939)
-rw-r--r--CONTRIBUTING.md64
1 files changed, 64 insertions, 0 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index cd9ccbe96..d0e0a5637 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -366,3 +366,67 @@ duration = float_or_none(video.get('durationMs'), scale=1000)
 view_count = int_or_none(video.get('views'))
 ```
 
+### Inline values
+
+Extracting variables is acceptable for reducing code duplication and improving readability of complex expressions. However, you should avoid extracting variables used only once and moving them to opposite parts of the extractor file, which makes reading the linear flow difficult.
+
+#### Example
+
+Correct:
+
+```python
+title = self._html_search_regex(r'<title>([^<]+)</title>', webpage, 'title')
+```
+
+Incorrect:
+
+```python
+TITLE_RE = r'<title>([^<]+)</title>'
+# ...some lines of code...
+title = self._html_search_regex(TITLE_RE, webpage, 'title')
+```
+
+### Collapse fallbacks
+
+Multiple fallback values can quickly become unwieldy. Collapse multiple fallback values into a single expression via a list of meta values.
+
+#### Example
+
+Good:
+
+```python
+description = self._html_search_meta(
+    ['og:description', 'description', 'twitter:description'],
+    webpage, 'description', default=None)
+```
+
+Unwieldy:
+
+```python
+description = (
+    self._og_search_description(webpage, default=None)
+    or self._html_search_meta('description', webpage, default=None)
+    or self._html_search_meta('twitter:description', webpage, default=None))
+```
+
+### Trailing parentheses
+
+Always move trailing parentheses after the last argument.
+
+#### Example
+
+Correct:
+
+```python
+    lambda x: x['ResultSet']['Result'][0]['VideoUrlSet']['VideoUrl'],
+    list)
+```
+
+Incorrect:
+
+```python
+    lambda x: x['ResultSet']['Result'][0]['VideoUrlSet']['VideoUrl'],
+    list,
+)
+```
+