代码风格

介绍

框架自身采用了google的C++风格,作者也鼓励在你的应用中使用此风格,有关此风格你可以查阅相关资料了解。下面是一段plain framework中的代码,以便大家参考:

你可以在此处下载到本项目使用的 风格指南:

链接:http://pan.baidu.com/s/1bneYgI7 密码:0ox1

base/global.h

/**
* PLAIN FRAMEWORK ( https://github.com/viticm/plainframework )
* $Id global.h
* @link https://github.com/viticm/plainframework for the canonical source repository
* @copyright Copyright (c) 2014- viticm( viticm.ti@gmail.com )
* @license
* @user viticm<viticm.ti@gmail.com>
* @date 2014/07/28 15:57
* @uses the base module for global defines
*/
#ifndef PF_BASE_GLOBAL_H_
#define PF_BASE_GLOBAL_H_ #include "pf/base/config.h" namespace pf_base { namespace global { extern char net_modulename[FILENAME_MAX];
extern char script_modulename[FILENAME_MAX];
extern char performance_modulename[FILENAME_MAX];
extern char db_modulename[FILENAME_MAX];
extern char engine_modulename[FILENAME_MAX];
extern char applicationname[FILENAME_MAX]; //应用全局名称
extern uint8_t applicationtype; //应用的类型 0 服务器 1 客户端 PF_API const char *get_net_modulename();
PF_API const char *get_script_modulename();
PF_API const char *get_performanace_modulename();
PF_API const char *get_db_modulename();
PF_API const char *get_engine_modulename();
PF_API const char *get_applicationname();
PF_API void set_applicationname(const char *name);
PF_API uint8_t get_applicationtype();
PF_API void set_applicationtype(uint8_t type); }; //namespace global }; //namespace ps_base #define NET_MODULENAME pf_base::global::get_net_modulename()
#define SCRIPT_MODULENAME pf_base::global::get_script_modulename()
#define PERFORMANCE_MODULENAME pf_base::global::get_performanace_modulename()
#define DB_MODULENAME pf_base::global::get_db_modulename()
#define ENGINE_MODULENAME pf_base::global::get_engine_modulename()
#define APPLICATION_NAME pf_base::global::get_applicationname()
#define APPLICATION_TYPE pf_base::global::get_applicationtype() #endif //PF_BASE_GLOBAL_H_

base/global.cc

#include "pf/base/string.h"
#include "pf/base/global.h" namespace pf_base { namespace global { char net_modulename[FILENAME_MAX] = {};
char script_modulename[FILENAME_MAX] = {};
char performance_modulename[FILENAME_MAX] = {};
char db_modulename[FILENAME_MAX] = {};
char engine_modulename[FILENAME_MAX] = {};
char applicationname[FILENAME_MAX] = {};
uint8_t applicationtype = ; const char *get_net_modulename() {
__ENTER_FUNCTION
if (strlen(net_modulename) > ) return net_modulename;
snprintf(net_modulename,
sizeof(net_modulename) - ,
"net_%s",
APPLICATION_NAME);
return net_modulename;
__LEAVE_FUNCTION
return NULL;
} const char *get_script_modulename() {
__ENTER_FUNCTION
if (strlen(script_modulename) > ) return script_modulename;
snprintf(script_modulename,
sizeof(script_modulename) - ,
"script_%s",
APPLICATION_NAME);
return script_modulename;
__LEAVE_FUNCTION
return NULL;
} const char *get_performanace_modulename() {
__ENTER_FUNCTION
if (strlen(performance_modulename) > ) return performance_modulename;
snprintf(performance_modulename,
sizeof(performance_modulename) - ,
"performance_%s",
APPLICATION_NAME);
return performance_modulename;
__LEAVE_FUNCTION
return NULL;
} const char *get_db_modulename() {
__ENTER_FUNCTION
if (strlen(db_modulename) > ) return db_modulename;
snprintf(db_modulename,
sizeof(db_modulename) - ,
"db_%s",
APPLICATION_NAME);
return db_modulename;
__LEAVE_FUNCTION
return NULL;
} const char *get_engine_modulename() {
__ENTER_FUNCTION
if (strlen(engine_modulename) > ) return engine_modulename;
snprintf(engine_modulename,
sizeof(engine_modulename) - ,
"engine_%s",
APPLICATION_NAME);
return engine_modulename;
__LEAVE_FUNCTION
return NULL;
} const char *get_applicationname() {
__ENTER_FUNCTION
if ( == strlen(applicationname)) {
snprintf(applicationname,
sizeof(applicationname) - ,
"%s",
"unknown");
}
return applicationname;
__LEAVE_FUNCTION
return NULL;
} void set_applicationname(const char *name) {
string::safecopy(applicationname, name, sizeof(applicationname));
} uint8_t get_applicationtype() {
return applicationtype;
} void set_applicationtype(uint8_t type) {
applicationtype = type;
} }; //namespace global } //namespace pf_base

模块 | 协议

成员招募(长期有效)

如果你也对开源知识比较感兴趣,如果也对网络应用或者网络游戏感兴趣,如果你也对该框架感兴趣,你可以加入我们的QQ群(348477824)。

欢迎大家进群相互交流学习,同时也欢迎各位朋友对该框架供出自己的一份心力。

plain framework 1 参考手册 入门指引之 代码风格的更多相关文章

  1. plain framework 1 参考手册 入门指引之 模块

    模块 总述 基础 数据库 引擎 事件 文件 网络 性能 脚本 系统 工具 总述 上图为plain framework(简称简约框架)所有的模块,包括基础.数据库.引擎.事件.文件.网络.性能.脚本.系 ...

  2. plain framework 1 参考手册 入门指引之简介

    简介 简介 能做什么? LINUX WINDOWS 简介 简约框架(plain framework)是一款基于C/C++开发的,跨平台(windows/linux)应用的基础框架,开发者可以利用此框架 ...

  3. plain framework 1 参考手册 入门指引之 许可协议

    许可 介绍 Apache2 License 介绍 使用非常友好的阿帕奇2许可协议,你可以应用到你想用的任何应用上,如需修改源码,请保留原作者信息. Apache2 License Apache Lic ...

  4. plain framework 1 参考手册 入门指引之 简明教程

    简明教程 简单的例子 实现代码 简单的例子 如果你已经下载好整个框架的源码,那么你可以在这里找到应用的例子: plainframework/applications/pf_simple 如果你在win ...

  5. Spring Framework 开发参考手册中文(在线HTML)

    https://blog.csdn.net/zfrong/article/details/3971722

  6. kotlin 语言入门指南(二)--代码风格

    语言风格 这里整理了 kotlin 惯用的代码风格,如果你有喜爱的代码风格,可以在 github 上给 kotlin 提 pull request . 创建DTOs(POJSs/POCOs) 文件: ...

  7. Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】

    源码请移步至:https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc 版 ...

  8. plain framework 1 一款主要用于网络(游戏)开发的C/C++开源框架 安装篇 updated

    上次介绍了一下plain framework的基础相关资料,今天该框架正式开源发布.项目的地址托管于github上,我相信大多数朋友都应该知道.今天要介绍的是该框架的目录基本结构,以及分别在linux ...

  9. plain framework 1(简约框架)一款主要用于网络(游戏)开发的C/C++框架 即将开源发布

    在我们的日常开发中,我们往往会遇到这种情况,当我们换了一个开发环境时很可能会重新利用一套新的框架进行开发.由于不同框架有着不同的接口,所以我们不得不花时间再次熟悉这些接口,这将造成开发时间上的重复,而 ...

随机推荐

  1. ajax的再次封装!(改进版) —— new与不 new 有啥区别?

    生命不息重构不止! 上一篇写了一下我对ajax的再次封装的方法,收到了很多有价值的回复,比如有童鞋建议用$.extend,一开始还以为要做成插件呢,后来才知道,原来这个东东还可以实现合并.省着自己再去 ...

  2. JavaScript中数组的增删改查

                                               数组的增加 ary.push()   向数组末尾添加元素,返回的是添加后新数组的长度,原有数组改变 ary.uns ...

  3. Infinite Scroll - jQuery & WP 无限滚动插件

    无限滚动(Infinite Scroll)也称为自动分页.滚动分页和无限分页.常用在图片.文章或其它列表形式的网页中,用来在滚动网页的时候自动加载下一页的内容.Infinite Scroll  这款  ...

  4. angularJs , json,html片段,bootstrap timepicker angular

    css .demotest { width: %; height: auto; overflow: auto; position: relative; margin: auto; margin-top ...

  5. Git本地仓库

    原文:http://www.cnblogs.com/wilber2013/p/4189920.html Git基本概念 在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository) ...

  6. Failed to apply plugin [id 'com.android.application'] 和 Could not find com.android.tools.build:gradle:2.XX的最正确的解决方法

    发现android studio是真的可爱啊,上一秒还没问题可以build运行,下一秒就出错...好,你任性,你牛逼.. 说下今天又遇到的两个问题:Failed to apply plugin [id ...

  7. 初学Spring有没有适合的书

    初学者之前没有阅读java框架源码的习惯.没有阅读过源码,知道整体流程么?知道依赖注入的概念么?知道aop么?知道其中用到了哪些设计模式么?再说了,如果一上手就是源码?难道你没有注意到Spring的类 ...

  8. minix2.0内核组织结构与公用头文件说明

    Minix2.0操作系统的源代码由两个目录组成:include/目录和src/目录 include/目录包含了操作系统所有的头文件(即.h文件) src/目录下包含了操作系统所有的源文件(.c或.s文 ...

  9. wifi强度数据采集器(android)

    来源:毕业设计 关键词:wifi数据的采集 SQLite数据库的使用 需求 采集实验室内各坐标处各wifi信号的强度 UI 因为是辅助工具,所以UI写的很简单,如下图 Wifi相关操作 //获取Wif ...

  10. css hover对其包含的元素进行样式设置

    <ul class="icon-down-single-arr-li"> <li> <a href="javascript:void(0)& ...