如何以专业的方式编码?

Pal*_*Dot 1 coding-style

我想知道,如何以完美的专业风格编写程序.很多时候我们编写了一个非常好的程序/代码来提供准确的输出.一个人可能会使用最好的算法来解决给定的问题.

但对于正在阅读您的代码以供他/她参考的人,由于不正确使用变量/函数名称而变得难以理解代码.(以及许多其他问题)

那么如何以专业的方式实现编写代码的完美性呢?

您可以直接编辑以下代码来详细说明您的想法. (不要编辑问题中的代码:)

您也可以以专业的方式在最后重写完整的代码.将会提供很多帮助.

(C中的简单堆排序算法)

#include<stdio.h>
#include<conio.h>

void insert(int i);
void swap(int *,int *);
void heap_sort(int);

int a[20];

void main()

{

        int n,i;
     clrscr();

     printf("Enter the no of elements : ");
     scanf("%d",&n);
     printf("\nEnter the elements : \n");
     for(i=0;i<n;i++)
     scanf("%d",&a[i]);
     heap_sort(n);
     printf("\nSorted array is : \n");
     for(i=0;i<n;i++)
     printf("\t%d",a[i]);
     getch();
}


void swap(int *p,int *q)
{

     int temp;
     temp=*p;
     *p=*q;
     *q=temp;

}


void heap_sort(int n)
{

     int x=1,i;
     while(x<n)
         {
   for(i=1;i<=n-x;i++)
   insert(i);
   swap(&a[0],&a[n-x]);
   x++;
         }
}



void insert(int i)
{

            int j=(i-1)/2,item=a[i];
     while((i>0) && (item>a[j]))
  {
   a[i]=a[j];
   i=j;
   j=(i-1)/2;
  }
    a[i]=item;

}
Run Code Online (Sandbox Code Playgroud)

spe*_*der 14

阅读Code Complete,这是关于此类主题的最佳书籍之一.你不会后悔的.


小智 5

  • 使用空格和新行.如果没有它们,任何风格的代码都难以理解.还要避免墙壁的文字风格.

看这个:

void main ()
{

    int n, i;
    clrscr ();

    printf ("Enter the no of elements : ");
    scanf ("%d", &n);

    printf ("\nEnter the elements : \n");
    for (i = 0; i < n; i++)
    scanf ("%d", &a[i]);

    heap_sort (n);
    printf ("\nSorted array is : \n");

    for (i = 0; i < n; i++)
    printf ("\t%d", a[i]);
    getch ();
}
Run Code Online (Sandbox Code Playgroud)

现在好多了,不是吗?

  • 避免使用无意义的单字母变量名称.它们是神秘的,并且没有向读者传达任何信息(并且在六个月之后传达给自己).

  • 必要时添加评论.如果您看到某些代码可能不清楚,请对其进行评论.如果您使用某种黑客或技巧,请描述它,它是什么以及为什么需要它.如果使用某种算法(尤其是数学计算),请参考它.

  • 避免使用很长的函数体.如果你看到一个函数得到太多的东西,重构它.将共同和重复的部分提取到共享和辅助函数中,以便阅读代码的人可以看到函数的概述.

  • 避免在代码中使用魔术数字.不要在代码中直接放置一些抽象数字(3,17,135等).在某处声明常量并在代码中引用它们.这样,它只会对您的代码产生一致的影响.很容易忘记更改......好吧,比如,代码中的26个数字中有3个使用.

  • 文本字符串也是如此.在资源,外部文件中将它们声明为字符串常量,并在代码中使用它们.