让 ReSharper 使用 m_ 约定

Making ReSharper use m_ convention

我将 ReSharper C++ 与 Visual Studio 一起使用,但它使用了一些我不喜欢的奇怪的命名约定。我想使用 this convention,它在 class 成员变量和 snake case 上使用 m_ 前缀。他们说 .clang-format 可以使用,但我没有使用 LLVM,而是 VS 的编译器。

是否有人根据这些约定制作了文件?很确定大多数人都在使用它们。

#ifndef RESOURCE_CLONER_HPP
#define RESOURCE_CLONER_HPP

#include <Windows.h>
#include <algorithm>
#include <stdexcept>
#include <string_view>

namespace resource_cloner
{
    
    class resource_cloner
    {
    public:
        resource_cloner() = default;

        resource_cloner(const resource_cloner&) = delete;

        resource_cloner(resource_cloner&& obj) noexcept
        {
            *this = std::move(obj);
        }

        ~resource_cloner()
        {
            unload();
        }

        resource_cloner& operator=(const resource_cloner&) = delete;

        resource_cloner& operator=(resource_cloner&& rhs) noexcept
        {
            m_source_path = rhs.m_source_path;
            
            return *this;
        }

        void load()
        {
            m_module = LoadLibraryExW(m_source_path.data(), nullptr, LOAD_LIBRARY_AS_DATAFILE);

            if (!m_module)
            {
                throw std::runtime_error("Could not open source file.");
            }
        }
        
        void unload() const
        {
            if (m_module)
            {
                FreeLibrary(m_module);
            }
        }

    private:
        std::wstring_view m_source_path;
        HMODULE m_module{ nullptr };
    };
    
}
    
#endif

您可以在“ReSharper | 选项 | 代码编辑 | C++ | 命名样式”选项页面上配置命名约定,或选择一种预定义方案。也就是说,同时使用“m_”作为 class 成员前缀和“t_”作为参数名称前缀是不寻常的,none 的主要 C++ 风格指南使用此约定。