• Advertisement
  • Popular Tags

  • Popular Now

  • Advertisement
  • Similar Content

    • By Ty Typhoon
      I like to build my A - Team now.
       
      I need loyal people who can trust and believe in a dream.
      If you got time and no need for direct pay please contact me now.
       
      We cant pay now, you will recieve a lifetime percentage if the released game will give earnings. 
      If I get the best people together for a team, everything should be possible.
       
       
      What i need:
      - Programmer c++
      - Unity / Unreal - we must check whats possible, please share your experience with me.
      - Sculpter, 3D Artist
      - Animator
      - Marketing / Promotion 
       
       
      What i do:
      - Studio Owner
      - Director
      - Recruit exactly you
      - Sounddesign
      - Main theme composing
      - Vocals
      - Game design
      - Gun, swords, shields and weapon design
      - Character, plants and animal design
       
       
      Please dont ask about the Name of the Game, about Designs or Screenshots.
      The game will be defintitly affected about our and your skills if you join the team.
       
       
      Planned for the big Game:
      - 1st person shooter
      - online multiplayer
      - character manipulation
      - complete big open world with like lifetime actions and reactions
      - gunstore with many items to buy
      - many upgrades for players
      - specials like mini games
       
      So if you are interested in joining a team with a nearly complete game idea, contact me now and tell me what you can do.
       
      discord:
      joerg federmann composing#2898
       
       
    • By codelyoko373
      I wasn't sure if this would be the right place for a topic like this so sorry if it isn't.
      I'm currently working on a project for Uni using FreeGLUT to make a simple solar system simulation. I've got to the point where I've implemented all the planets and have used a Scene Graph to link them all together. The issue I'm having with now though is basically the planets and moons orbit correctly at their own orbit speeds.
      I'm not really experienced with using matrices for stuff like this so It's likely why I can't figure out how exactly to get it working. This is where I'm applying the transformation matrices, as well as pushing and popping them. This is within the Render function that every planet including the sun and moons will have and run.
      if (tag != "Sun") { glRotatef(orbitAngle, orbitRotation.X, orbitRotation.Y, orbitRotation.Z); } glPushMatrix(); glTranslatef(position.X, position.Y, position.Z); glRotatef(rotationAngle, rotation.X, rotation.Y, rotation.Z); glScalef(scale.X, scale.Y, scale.Z); glDrawElements(GL_TRIANGLES, mesh->indiceCount, GL_UNSIGNED_SHORT, mesh->indices); if (tag != "Sun") { glPopMatrix(); } The "If(tag != "Sun")" parts are my attempts are getting the planets to orbit correctly though it likely isn't the way I'm meant to be doing it. So I was wondering if someone would be able to help me? As I really don't have an idea on what I would do to get it working. Using the if statement is truthfully the closest I've got to it working but there are still weird effects like the planets orbiting faster then they should depending on the number of planets actually be updated/rendered.
    • By BenjaminBouchet
      Learning game development in Unreal Engine could be a daunting task for someone who don’t know where to start, and a cumbersome process if you don’t organize your progression correctly. One thing commonly known by experienced developers and by people unfamiliar with coding: mastering a development language is a long and difficult task.
      From blueprints to C++ in Unreal Engine
      If you want to learn fast, you need a good learning strategy. Unreal Engine contains a very powerful tool which you can use to learn C++ faster: its blueprint system. Blueprints are extremely easy to learn (and you may already have a good knowledge of them). Thus you can conveniently use them as a guide for writing code in C++. This is the reason why I am writing a tutorial series on how to make the transition from Unreal Engine blueprints to C++.
      Learn and practice C++
      Following this tutorial, you’ll acquire new concepts of C++ programming in every chapter. Then following chapters will give you reasons to reuse and practice those same concepts. There’s no better way to wire you brain.
      Link to the tutorial: [Tutorial] Learn C++ in Unreal Engine 4 by making a powerful camera
      Please do send me as much feedback as you want. I’ll be considering every constructive remarks and taking them into consideration. Your feedback will help me to improve and update the existing chapters and to make the next one better.

      View full story
    • By BenjaminBouchet
      Learning game development in Unreal Engine could be a daunting task for someone who don’t know where to start, and a cumbersome process if you don’t organize your progression correctly. One thing commonly known by experienced developers and by people unfamiliar with coding: mastering a development language is a long and difficult task.
      From blueprints to C++ in Unreal Engine
      If you want to learn fast, you need a good learning strategy. Unreal Engine contains a very powerful tool which you can use to learn C++ faster: its blueprint system. Blueprints are extremely easy to learn (and you may already have a good knowledge of them). Thus you can conveniently use them as a guide for writing code in C++. This is the reason why I am writing a tutorial series on how to make the transition from Unreal Engine blueprints to C++.
      Learn and practice C++
      Following this tutorial, you’ll acquire new concepts of C++ programming in every chapter. Then following chapters will give you reasons to reuse and practice those same concepts. There’s no better way to wire you brain.
      Link to the tutorial: [Tutorial] Learn C++ in Unreal Engine 4 by making a powerful camera
      Please do send me as much feedback as you want. I’ll be considering every constructive remarks and taking them into consideration. Your feedback will help me to improve and update the existing chapters and to make the next one better.
    • By mrDIMAS
      Hello everyone! I need to fill lua table with functions from script file like this:
      function init() end function update() end I need to create table on stack and fill it with this functions from specified file. How can I do this?
  • Advertisement
  • Advertisement

C++ Naming convention on interfaces in C++

Recommended Posts

Hello!

I wanted to create a few interface-classes in a rather new project. Other programming languages, as C#/Java commonly agree on writing file names in a way similar to: IMyClass

Personally, I use underscore within C++, just because I tend to go for long variable-names and it improves readability. Hence writing file-names with underscore seems just the native decision. Now, the I-prefix is pascal-case, which astonishes me in general, because iMyClass is more readable, but anyway: I would rather not want to use it and of course, nobody could force me to do so anyway.

Nonetheless, I would like to know how you tackle interfaces in C++ in terms of naming?

Currently, I'm considering:

  • i_my_class.cpp (which looks a bit weird, never seen this before)
  • imy_class.cpp (less readable)
  • interface_my_class.cpp or my_class_interface.cpp

I even thought about omitting the interface/prefix altogether in C++. Curious on how you deal with this!

Thanks for your time!

 

Share this post


Link to post
Share on other sites
Advertisement

A lot of code bases opt for a change in terminology, and name their interfaces "abstract". i.e. my_abstract_class.cpp.

That's one way anyway. Edit: you'd probably want to use my_class_interface though, since you're using an interface and it would be good to keep the distinction (Apoch makes a good point about the interchanging of terms being confusing, best not contribute to that).

In my professional work our interface files are prefixed with I (we have PascalCase filenames). Not something I'm fond of, but that's how they do it.

In my personal code I don't prefix my interfaces and instead go for clear naming. If something is ambiguous I'll tackle it when it comes up (rename derived classes, change the name to something more clear, refactor the architecture if needed). In which case I'd name the files just like everything else.

Edited by Styves

Share this post


Link to post
Share on other sites

An abstract class is a different thing than an interface. Please don't perpetuate the confusion :-)

 

Aside from that:

  • I am slowly losing the habit of using I-prefix anywhere in C++
  • I personally hate naming files after classes
  • Do whatever feels like the least friction for you. I tolerate a huge amount in other people's code that would bother me in my own

Share this post


Link to post
Share on other sites

Use whatever you want, just be consistent. 

The I prefix is fairly common, such as IWidget.

A suffix is also common, such as WidgetInterface or WidgetBase.

 

Share this post


Link to post
Share on other sites

I don't know who invented the "I" prefix, but at least the Collection framework of Java doesn't use it, ie Comparable, Iterator, List. It makes sense to me, tbh, it's an abstract view to a class.

In the end though, like others said, decide something and stick with it, anything is fine as long as you're consistent. We won't ever get universal agreement on how to name things anyway, no point in worrying what others think :P

Share this post


Link to post
Share on other sites
6 hours ago, ApochPiQ said:

I am slowly losing the habit of using I-prefix anywhere in C++

Yeah I don't any more either. Interfaces, abstract-classes and concrete-classes all use the same convention.

Share this post


Link to post
Share on other sites

Systems Hungarian notation is one of the worst cargo cults to have ever been perpetrated in programming.  You should consider not bending the knee to that golden beast and so avoid prefixing the names of interface classes with the letter I.

You should be programming in terms of interfaces anyway, so name your interfaces as the base concept (eg. "class MyClass" is the interface).  After that, qualify your concrete classes that implement the interface (eg. "class MyConcreteClass" and "class MyMockClass" might be concrete classes implementing the interface... I try to stick to English grammatical constructs even though it doesn't group nicely when sorted lexicographically, because I can always use glob sorting if I need to).

Code is literature, make it humanly and humanely readable.

Share this post


Link to post
Share on other sites

I don't use the "I" prefix on interfaces. But if I can't come up with a better implementation name (e.g. because "there is only one" implementation) then I will use an "Impl" postfix on the concrete class.

I.e.

class FooImpl : Foo { };

 

But wherever possible, no warts on names at all:

class GreenFoo : Foo { };
class BlueFoo : Foo { };

 

Share this post


Link to post
Share on other sites
2 hours ago, dmatter said:

But if I can't come up with a better implementation name (e.g. because "there is only one" implementation) then I will use an "Impl" postfix on the concrete class.

Why do you have an interface then? I mean, you can just make the class without the interface, and refactor an interface into the code later, when you have a need for it?

Share this post


Link to post
Share on other sites

It isn't a bad thing.  It introduces a slight cost but keeps options open for extension later through dependency inversion.  If everything is implemented against the base interface the concrete type doesn't matter.

If the cycles were critical then I agree it is wasteful, but for what was described that won't be a concern.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Advertisement