diff --git a/best_practices.md b/best_practices.md deleted file mode 100644 index 19eee22d..00000000 --- a/best_practices.md +++ /dev/null @@ -1,147 +0,0 @@ - -Pattern 1: Use proper error handling with get_logger() instead of print statements for consistent logging throughout the codebase. - - -Example code before: -``` -try: - # Some code that might fail - result = process_data() -except Exception as e: - print(f"Failed to process data: {e}") -``` - -Example code after: -``` -try: - # Some code that might fail - result = process_data() -except Exception as e: - get_logger().error(f"Failed to process data", artifact={"error": str(e)}) -``` - -
Relevant past discussions: -- https://github.com/qodo-ai/pr-agent/pull/1529#discussion_r1958684550 -- https://github.com/qodo-ai/pr-agent/pull/1529#discussion_r1958686068 -- https://github.com/qodo-ai/pr-agent/pull/1529#discussion_r1964110734 -- https://github.com/qodo-ai/pr-agent/pull/1529#discussion_r1964107962 -
- - -Pattern 2: Add defensive null/type checking for dictionary access to prevent potential runtime errors, especially when working with API responses or user inputs. - - -Example code before: -``` -if suggestion.get('score') >= threshold and suggestion.get('improved_code'): - process_suggestion(suggestion) -``` - -Example code after: -``` -if suggestion.get('score') is not None and suggestion.get('improved_code') and int(suggestion['score']) >= threshold: - process_suggestion(suggestion) -``` - -
Relevant past discussions: -- https://github.com/qodo-ai/pr-agent/pull/1391#discussion_r1879875496 -- https://github.com/qodo-ai/pr-agent/pull/1290#discussion_r1798939921 -- https://github.com/qodo-ai/pr-agent/pull/1391#discussion_r1879875489 -
- - -Pattern 3: Add descriptive comments for complex logic or non-obvious code to improve maintainability and help future developers understand the purpose of the code. - - -Example code before: -``` -if not issue or not isinstance(issue, dict): - continue -``` - -Example code after: -``` -# Skip empty issues or non-dictionary items to ensure valid data structure -if not issue or not isinstance(issue, dict): - continue -``` - -
Relevant past discussions: -- https://github.com/qodo-ai/pr-agent/pull/1262#discussion_r1782097205 -- https://github.com/qodo-ai/pr-agent/pull/1583#discussion_r1971790979 -
- - -Pattern 4: Wrap API calls and external service interactions with proper try-except blocks and add specific error handling for different failure scenarios. - - -Example code before: -``` -data_above_threshold = {'code_suggestions': []} -for suggestion in data['code_suggestions']: - if int(suggestion.get('score', 0)) >= threshold: - data_above_threshold['code_suggestions'].append(suggestion) -self.push_inline_code_suggestions(data_above_threshold) -``` - -Example code after: -``` -data_above_threshold = {'code_suggestions': []} -try: - for suggestion in data['code_suggestions']: - if int(suggestion.get('score', 0)) >= threshold: - data_above_threshold['code_suggestions'].append(suggestion) - if data_above_threshold['code_suggestions']: - self.push_inline_code_suggestions(data_above_threshold) -except Exception as e: - get_logger().error(f"Failed to publish suggestions, error: {e}") -``` - -
Relevant past discussions: -- https://github.com/qodo-ai/pr-agent/pull/1391#discussion_r1879870807 -- https://github.com/qodo-ai/pr-agent/pull/1263#discussion_r1782129216 -
- - -Pattern 5: Use consistent formatting and capitalization in documentation, especially in field descriptions and configuration comments, to improve readability. - - -Example code before: -``` -class ConfigFields(BaseModel): - field_one: str = Field(description="the first field that does something") - field_two: str = Field(description="The second field for another purpose") -``` - -Example code after: -``` -class ConfigFields(BaseModel): - field_one: str = Field(description="The first field that does something") - field_two: str = Field(description="The second field for another purpose") -``` - -
Relevant past discussions: -- https://github.com/qodo-ai/pr-agent/pull/1262#discussion_r1782097204 -- https://github.com/qodo-ai/pr-agent/pull/1543#discussion_r1958093666 -
- - -Pattern 6: Fix typos and grammatical errors in documentation, comments, and user-facing messages to maintain professionalism and clarity. - - -Example code before: -``` -# Create a webhook in GitLab. Set the URL to http[s]:///webhook, the secret token to the generated secret from step 2, andenable the triggers. -``` - -Example code after: -``` -# Create a webhook in GitLab. Set the URL to http[s]:///webhook, the secret token to the generated secret from step 2, and enable the triggers. -``` - -
Relevant past discussions: -- https://github.com/qodo-ai/pr-agent/pull/1307#discussion_r1817699788 -- https://github.com/qodo-ai/pr-agent/pull/1307#discussion_r1817699656 -- https://github.com/qodo-ai/pr-agent/pull/1517#discussion_r1942896094 -
-