我使用C++的个人风格总是把类声明放在一个包含文件中,并在.cpp文件中定义,非常类似于Loki对C++头文件,代码分离的回答.不可否认,我喜欢这种风格的部分原因可能与我花费编码Modula-2和Ada的所有年份有关,两者都有与规范文件和正文文件类似的方案.
我有一个同事,比我更了解C++,他坚持认为所有的C++声明应尽可能在头文件中包含定义.他并不是说这是一种有效的替代风格,甚至是一种稍微好一点的风格,而是这是每个人现在都用于C++的新普遍接受的风格.
我不像以前那样柔软,所以我并不急于拼抢他的这个潮流,直到我看到更多的人和他在一起.那个成语真的有多常见?
只是给出答案的一些结构:它现在是The Way,非常常见,有点普遍,不常见,还是出错?
如今创建的许多游戏都有自己的成就系统,奖励玩家/用户完成某些任务.stackoverflow上的徽章系统完全相同.
虽然有一些问题我无法找到好的解决方案.
成就系统必须始终关注某些事件,想想一个提供20到30个成就的游戏,例如:战斗.服务器会检查这些事件(如:玩家避免X在这场战斗中对手还是玩家的攻击走到X英里)的所有时间.
成就系统通常需要仅在游戏的核心引擎中使用的数据,如果没有那些令人讨厌的成就,就不需要那些数据(想想例如:每次战斗中玩家跳跃的频率,你不要我不想将所有这些信息存储在数据库中.)我的意思是,在某些情况下,添加成就的唯一方法是将检查其当前状态的代码添加到游戏核心,这通常是一个非常糟糕的主意.
成就系统如何与拥有后来不必要信息的游戏核心相互作用?(见上面的例子)
他们如何与游戏的核心分离?
我的例子可能看起来"无害",但想想目前在"魔兽世界"和同时在线的众多玩家中可获得的1000 多项成就.
我是C++的新手,我有一些关于代码分离的一般问题.我目前在一个文件中构建了一个小应用程序.我现在想要做的是将它转换为单独的文件,使它们包含类似的代码或诸如此类的东西.我现在真正的问题是,我怎么知道如何分开事物?代码应该分开的隐形边际是什么?
另外,头文件有什么意义?它是否转发声明方法和类,以便在编译期间链接器包含它们之前我可以在我的代码中使用它们?
对方法或最佳实践的任何见解都会很棒,谢谢!
我有一个如下所示的项目结构.
云项目文件夹有四个类型的项目(生态项目,evn项目,元项目,svn项目)
每种类型的项目都包含四个不同的项目,例如生态项目,我们有生态1项目,生态2项目,生态3项目,生态4项目.
我已经在Sonar Qube中集成了这个,当我显示所有组合项目的源代码时,我只有一个Project作为Cloud项目,如下所示.
我们可以在Sonar Qube中拥有像可视化这样的层次结构,例如,当我点击Sonar Dashbaord中的Cloud Projects时,它将导航到另外四个项目,例如生态项目,evn项目,元项目,svn项目现在让我们说当我点击生态项目时,它将向我展示生态1项目,生态2项目,生态3项目,生态4项目,现在当我点击eco-1项目时,它将显示其源代码相关的仪表板和覆盖范围
我的sonar-project.properties如下
# Required metadata
sonar.projectKey=cloud-projects
sonar.projectName=Cloud Projects
sonar.projectVersion=1.0
# Language
sonar.language=java
# Encoding of the source files
sonar.sourceEncoding=UTF-8
sonar.modules=eco-projects, evn-projects, met-projects, svn-projects
eco-projects.sonar.projectName=eco-projects
eco-projects.sonar.language=java
eco-projects.sonar.modules=eco-1-projects, eco-2-projects, eco-3-projects,eco-4-projects
eco-projects.eco-1-projects.sonar.projectName=eco-1-projects
eco-projects.eco-1-projects.sonar.sources=docroot/WEB-INF/src
eco-projects.eco-1-projects.sonar.language=java
eco-projects.eco-2-projects.sonar.projectName=eco-2-projects
eco-projects.eco-2-projects.sonar.sources=docroot/WEB-INF/src
eco-projects.eco-2-projects.sonar.language=java
eco-projects.eco-3-projects.sonar.projectName=eco-3-projects
eco-projects.eco-3-projects.sonar.sources=docroot/WEB-INF/src
eco-projects.eco-3-projects.sonar.language=java
eco-projects.eco-4-projects.sonar.projectName=eco-4-projects
eco-projects.eco-4-projects.sonar.sources=docroot/WEB-INF/src
eco-projects.eco-4-projects.sonar.language=java
:
:
:
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我一些解决方案
有没有人有任何关于保持我的GUI类逻辑的建议?我尝试使用良好的类设计并保持尽可能多的分离,但我的Form类通常最终会混入比我想要的更多的非UI内容,并且它往往使维护变得非常痛苦.
(Visual Studio 2008 Professional,C#,Windows应用程序).
非常感谢.
背景: 我帮助开发一种多人游戏,主要用C++编写,使用标准的客户端 - 服务器架构.服务器可以自己编译,客户端与服务器一起编译,因此您可以托管游戏.
问题
游戏将客户端和服务器代码组合到同一个类中,这开始变得非常麻烦.
例如,以下是您在公共类中可能看到的一些小样本:
// Server + client
Point Ship::calcPosition()
{
// Do position calculations; actual (server) and predictive (client)
}
// Server only
void Ship::explode()
{
// Communicate to the client that this ship has died
}
// Client only
#ifndef SERVER_ONLY
void Ship::renderExplosion()
{
// Renders explosion graphics and sound effects
}
#endif
Run Code Online (Sandbox Code Playgroud)
标题:
class Ship
{
// Server + client
Point calcPosition();
// Server only
void explode();
// Client only
#ifndef SERVER_ONLY
void renderExplosion(); …Run Code Online (Sandbox Code Playgroud) 我有一个课程可以帮助我处理用户.例如:
$user = new User("login","passw");
$name = $user->getName();
$surname = $user->getSurname();
$table = $user->showStats();
Run Code Online (Sandbox Code Playgroud)
所有这些方法都有SQL查询.有些操作只需要一个SQL查询,有些只需要一个以上.如果数据库结构发生变化 - 将很难更改所有查询(类很长).所以我想让SQL查询远离这个类.但是怎么做呢?
在阅读了这个问题之后,我就了解了存储过程.这是否意味着,现在一个动作只需要一个SQL查询(调用存储过程)?但是如何从php组织分离sql?我应该在数组中保留sql-queries吗?或者它应该是一个sql-queries类.如果是的话,如何组织这个课程(也许我应该学习什么样的模式)
我现在正在编写一个代码,其中一部分需要要求用户在一行中输入 3 个不同的数字(每个数字可以是任意位数)。假设我要求用户输入,他输入:“31 722 9191”。数字之间需要有空格。您将如何分离这些数字并为每个数字分配一个变量。例如 31 是“A”,722 是“B”等等......到目前为止我得到的是:
user_input = input(" Please enter the numbers: ")
Run Code Online (Sandbox Code Playgroud)
谢谢 !
我正在编写一个实用程序类库,其中许多是单例.我使用继承实现了它们:
template <class T>
class Singleton {
public:
T& getInstance() {
if(m_instance == 0) {
m_instance = new T;
}
return m_instance;
}
private:
static T* m_instance;
};
class SomeClass : public Singleton<SomeClass> {
public:
SomeClass() {}
virtual ~SomeClass() {}
void doSomething() {;}
};
Run Code Online (Sandbox Code Playgroud)
显然这是一个简单的例子,而不是一个真正的类.无论如何,我发现使用如下代码:
SomeClass::getInstance().doSomething();
Run Code Online (Sandbox Code Playgroud)
将创建SomeClass的多个实例.我想这可能是因为它在我的库(.a)文件之外以及内部使用.例如,我使用的是一个非自己编写的UI库,它是单独编译的,我正在添加它.其中一些添加使用单体,这些单体也在我的.a库中使用.
单独的编译会导致这种情况吗?别的什么?
我设法解决这个问题的唯一方法是在main.cpp文件中创建一个全局对象,我用我需要的任何单例初始化它.然后,所有代码都通过以下调用访问此公共全局对象:
GlobalObject::getSomeClass().doSomething()
Run Code Online (Sandbox Code Playgroud)
我不想每次创建另一个单例时都要为这个对象添加一个额外的方法.使用第一种访问方法,语法似乎更清晰,更熟悉:
SomeClass::getInstance().doSomething();
Run Code Online (Sandbox Code Playgroud)
如果您有任何想法,意见等,请告诉我.
谢谢.
我是新手......我有一个Java Swing应用程序,它在我的机器上运行良好.我想通过Citrix从服务器访问此应用程序.因此,当我单击已发布的图标时,它将在jar文件中运行main方法,并使我能够访问该应用程序.此应用程序将能够访问数据库服务器中的数据库.
但我希望多个用户同时访问该应用程序,这就是我的问题所在:
我想为n个用户创建n个可用的线程(即)我可以设置并发访问的限制.但是什么是切入点.....我的意思是当我点击发布的图标时,它意味着每次调用main方法.
我可以想到从逻辑层分离我的用户界面....但我不知道如何做到这一点.当然我正在关注MVC模型.我的问题是每次访问应用程序时创建gui的多个实例.
最后我想使用数据库连接池.那么,这是否意味着我必须创建一个单独的java程序来创建这个池,我的应用程序将使用它的数据源?
任何人都可以'指出'我正确的方向吗?我不是在寻找具体的想法,而只是想知道如何创建这个多用户应用程序.
code-separation ×10
c++ ×4
java ×2
achievements ×1
architecture ×1
c# ×1
class ×1
coding-style ×1
header ×1
input ×1
layer ×1
multi-user ×1
oop ×1
optimization ×1
php ×1
python ×1
python-3.x ×1
singleton ×1
sonarqube ×1
sql ×1
swing ×1