Visual Studio:热键/自动对.h中的函数进行排序以与.cpp保持一致的方式
Visual Studio : hotkey/way to automatically sort functions in .h to be consistent with .cpp
我想使头.h
中函数的顺序与源文件.cpp
中函数的次序一致。
示例
B.h
class B{
void f2(); //<--- wrong order
void f1();
};
B.cpp
#include "B.h"
void B::f1(){}
void B::f2(){}
预期结果(B.h)
class B{
void f1(); //<---- nice
void f2();
};
问题
主要问题:在Visual Studio中有(半)自动执行(.cpp -> .h
)的方法吗
热键?剧本插件?Visual AssistX/Resharper?
还有一个类似的问题,但它提出了相反的问题(没有解决方案)
次要问题:如何自动执行相反的方法(半)?(.h -> .cpp
)
这是一个基本特征。它应该存在,对吧
否则,专家们将如何处理这种疾病?他们会手动移动吗?
编辑:
三个答案都表示没有这样的自动方法,但我仍然希望有。
正如另一个答案所指出的,似乎没有任何自动的方式来做你想做的事情。
但是,您可以通过遵循编码标准来简化流程。
首先,你会问:
主要问题:在Visual Studio中有(半)自动执行(.cpp->.h)的方法吗?热键?插件?
我认为这不是正确的方法。您不希望.cpp文件的布局驱动.h文件的布局。.h文件就是接口。对.h文件进行布局,使其对您和您的用户都有意义。然后确保.cpp文件的布局方式与.h文件相关。
以下是一个对我来说有意义的.h文件布局。
//---------------------------------------------------------------------
/*!
file MyClass.h
Copyright Notice
...
author Your Name
date 2017-Mar-01
*/
//---------------------------------------------------------------------
#pragma once
#ifndef MyClass_H
#define MyClass_H
// ********** BEGIN STANDARD INCLUDES **********
// ********** END STANDARD INCLUDES **********
// ********** BEGIN EXTERN DECLARATIONS **********
// ********** END EXTERN DECLARATIONS **********
// ********** BEGIN FORWARD DECLARATIONS **********
// ********** END FORWARD DECLARATIONS **********
// ********** BEGIN TYPEDEF DEFINITIONS **********
// ********** END TYPEDEF DEFINITIONS **********
// ********** BEGIN MACRO DEFINITIONS **********
// ********** END MACRO DEFINITIONS **********
// ********** BEGIN ENUM DEFINITIONS **********
// ********** END ENUM DEFINITIONS **********
/*!
class MyClass
This class does this and that.
*/
class MyClass
{
public:
protected:
private:
};
// ********** BEGIN INLINE FUNCTIONS **********
// ********** END INLINE FUNCTIONS **********
// ********** BEGIN EXTERN FUNCTIONS **********
// ********** END EXTERN FUNCTIONS **********
#endif
以及相应.cpp文件的布局:
//---------------------------------------------------------------------
/*!
file MyClass.cpp
Copyright Notice
...
author Your Name
date 2017-Mar-01
*/
//---------------------------------------------------------------------
#include "MyClass.h"
// ********** BEGIN STANDARD INCLUDES **********
// ********** END STANDARD INCLUDES **********
// ********** BEGIN EXTERN DECLARATIONS **********
// ********** END EXTERN DECLARATIONS **********
// ********** BEGIN STATIC DECLARATIONS **********
// ********** END STATIC DECLARATIONS **********
// ********** BEGIN EXTERN DEFINITIONS **********
// ********** END EXTERN DEFINITIONS **********
// ********** BEGIN HELPER CLASSES **********
// Namespace for helper classes and functions used in the file.
namespace MyClassNS
{
}
using namespace MyClassNS;
// ********** END HELPER CLASSES **********
// ********** BEGIN PUBLIC FUNCTIONS **********
// ********** END PUBLIC FUNCTIONS **********
// ********** BEGIN PROTECTED FUNCTIONS **********
// ********** END PROTECTED FUNCTIONS **********
// ********** BEGIN PRIVATE FUNCTIONS **********
// ********** END PRIVATE FUNCTIONS **********
有了这样的布局,将更容易确保函数声明在.h文件中出现的顺序在.cpp文件中得到遵循。
PS您不需要在代码中使用Doxygen样式的标记,除非您使用它来自动生成文档。
这只是我的意见
由于以下原因,不可能有这样的功能:
-
对*.h文件进行排序会导致公共、受保护和私有方法混合,最好将这些部分分开,然后立即查看方法属于哪个组。
-
您应该告诉要对哪个*.h文件进行排序,因为在一个*.cpp中,您可以拥有在多个*.h文件中声明的多个类的定义。
-
您应该告诉要对哪个*.h文件进行排序,因为*.cpp文件的名称可能与*.h 不同
没有按钮或快捷方式。你只需要使用剪切移动或普通方式手动移动它,即选择代码并将其拖动到你想要的位置。
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- std::sort()函数无法对向量的一部分进行排序
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- 用于合并排序的合并函数
- 如何计算此排序函数的时间复杂度?
- 什么是自定义比较器以及如何在 C++ 的排序函数中使用它?
- 为什么用户定义的函数不按照给定的顺序对相同长度的元素进行排序?
- 自定义排序函数中的堆溢出
- 分段 排序函数实现中的错误
- 使用模板化分配器和对向量进行排序的函数
- 为什么我的函数接受"std::string"进行排序不会改变它?
- 对没有比较器或λ函数的向量进行排序?
- C++中的析构函数和构造函数排序
- 数组中的函数排序错误
- 如何命名比较谓词函数排序向量
- 按lexicographical_compare()函数排序
- 构造函数排序(全局作用域)问题
- 按接受c++中参数的函数排序
- 函数排序错误
- 根据不同函数排序的std::向量的交集