Expanded up Power of 10 guide
- Slight formatting tweak to guide
This commit is contained in:
parent
c5960f9f6c
commit
4df8521c58
1 changed files with 29 additions and 8 deletions
|
@ -1,6 +1,8 @@
|
|||
# NASA-style Programming for C#
|
||||
|
||||
I asked the AI to write their instructions in the form of guidelines. I figured I'd use C# since it's both my preferred language and the syntax should be fairly easy to grasp once you understand the basics.
|
||||
I asked the AI to write their [NASA-style](https://en.wikipedia.org/wiki/The_Power_of_10:_Rules_for_Developing_Safety-Critical_Code) [coding instructions](Powerof10PPrompt.txt) in the form of guidelines. I figured I'd use C# since it's both my preferred language and the syntax should be fairly easy to grasp once you understand the basics.
|
||||
|
||||
Why NASA? Their coding standards have loads of redundancies, and if AI is going to behave like advanced code generation tools, they need to be as fault-tolerant as possible. While my instructions were modified to account for modern languages, the principles are still the same.
|
||||
|
||||
My only request was to apply .NET 6's [top-level statements](https://learn.microsoft.com/en-us/dotnet/csharp/tutorials/top-level-statements) for brevity. Aside from a few organizational tweaks with the guidelines and fixing the scope example to be wrapped in a class, it all works flawlessly.
|
||||
|
||||
|
@ -9,7 +11,7 @@ My only request was to apply .NET 6's [top-level statements](https://learn.micro
|
|||
- Keep the code simple and coherent. Use meaningful identifiers and limit the complexity of expressions.
|
||||
- Keep functions or methods short, with a single responsibility.
|
||||
|
||||
**Example:**
|
||||
### Example:
|
||||
|
||||
```csharp
|
||||
// Good example of a short, focused method
|
||||
|
@ -28,7 +30,7 @@ Console.WriteLine($"The sum is {result}");
|
|||
- Validate and sanitize inputs to prevent security vulnerabilities like injection attacks.
|
||||
- Use try-catch blocks to handle exceptions gracefully.
|
||||
|
||||
**Example:**
|
||||
### Example:
|
||||
|
||||
```csharp
|
||||
using System.Globalization;
|
||||
|
@ -49,7 +51,7 @@ else
|
|||
- Use environment variables or configuration files for environment-specific settings.
|
||||
- Rely on cross-platform libraries within .NET.
|
||||
|
||||
**Example:**
|
||||
### Example:
|
||||
|
||||
```csharp
|
||||
// Reading configuration using environment variables
|
||||
|
@ -69,7 +71,7 @@ else
|
|||
- Prefer `using` statements to safely manage resource cleanup.
|
||||
- Avoid excessive memory allocation and prefer stack-allocated variables.
|
||||
|
||||
**Example:**
|
||||
### Example:
|
||||
|
||||
```csharp
|
||||
// Using statement to ensure safe disposal
|
||||
|
@ -87,7 +89,7 @@ using (var reader = new StreamReader("example.txt"))
|
|||
|
||||
- Limit the visibility of variables and functions to the smallest scope necessary.
|
||||
|
||||
**Example:**
|
||||
### Example:
|
||||
|
||||
```csharp
|
||||
namespace Application;
|
||||
|
@ -113,7 +115,7 @@ class Program
|
|||
|
||||
- Sanitize and validate all external inputs to secure your application.
|
||||
|
||||
**Example:**
|
||||
### Example:
|
||||
|
||||
```csharp
|
||||
using System.Web;
|
||||
|
@ -134,7 +136,7 @@ else
|
|||
|
||||
- Use XML documentation comments for functions or methods to improve maintainability and provide documentation.
|
||||
|
||||
**Example:**
|
||||
### Example:
|
||||
|
||||
```csharp
|
||||
/// <summary>
|
||||
|
@ -149,6 +151,25 @@ int Sum(int a, int b)
|
|||
}
|
||||
```
|
||||
|
||||
### 8. Use Preprocessors, Macros, or Metaprogramming Techniques Sparingly to Maintain Code Clarity
|
||||
|
||||
- Preprocessor directives can be useful for conditional compilation but should be used judiciously to avoid obscuring the code.
|
||||
|
||||
### Example:
|
||||
|
||||
```csharp
|
||||
#if DEBUG
|
||||
Console.WriteLine("Running in Debug mode.");
|
||||
#else
|
||||
Console.WriteLine("Running in Release mode.");
|
||||
#endif
|
||||
|
||||
int result = Sum(5, 3);
|
||||
Console.WriteLine($"The sum is {result}");
|
||||
|
||||
int Sum(int a, int b) => a + b;
|
||||
```
|
||||
|
||||
## Example Using Top-Level Statements in .NET 6
|
||||
|
||||
Combining several of the above principles:
|
||||
|
|
Loading…
Add table
Reference in a new issue