In software development, I’m using the so-called “Façade Pattern” to hide the complexity of a workflow via abstraction and encapsulation. I’m naming my classes using a “_Façade” suffix, so like Customer_Façade, Filesystem_Façade, and such.

I’d like a better word to use in my naming convention. What is an alternative to façade?

I've seen the question Word for "ability to hide complexity", but it does not provide an acceptable answer.

After thought: I’m actually wondering whether I should even try to find a generalized word from the English language, or whether I should instead try to find a word from the specific domain (software development), considering that these will have different meanings depending on context — for example, Profile.

  • Why not abstraction or encapsulation as you have suggested? May 9, 2012 at 15:48
  • Not abstraction because the meaning would be ambiguous with the platform since it already has a definition of abstract classes. Encapsulation is pretty long, but it doesn't seem to fit. 'RegistrationEncapsulation' vs 'RegistrationFacade' May 9, 2012 at 16:02
  • 3
    Why not use facade? It's a widely accepted term in OOP.
    – Jez
    May 9, 2012 at 16:06
  • As a potentially dumb question/thought, does your code lose any sense if you don't tag things as a facade?
    – tanantish
    May 9, 2012 at 16:18
  • Not a dumb question at all. It will lose sense if it isn't tagged and that's why I'm looking for a good name for the convention. May 9, 2012 at 17:32

3 Answers 3


This seems more like a programming question than an English-language one, but here’s my answer anyway:

I question whether you need a suffix for these classes. Unless you have both Customer and CustomerFacade classes, you should just call your single class a Customer. If you do need the second class to hide certain features then perhaps a suffix like Worker or Interface would be appropriate, depending on what you are trying to accomplish.

  • +1 I agree with you. I was thinking of 'Service' instead. I do need a suffix to differentiate the two. May 9, 2012 at 17:29
  • I think this is the correct answer, but for a reason not stated: using these kinds of identifiers strongly suggests that the developer is thinking in terms of the representation rather than the thing being represented. Jul 13, 2015 at 9:55

The difficulty is arising from your getting stuck with 'hiding complexity.' I'd suggest using a simpler, familiar term and assigning it the relevant meaning only for the context. Such as Profile: generally, the real 'face' of something. However, we assign it the special meaning of a simpler 'public face' of what is otherwise a complex thing for our context.

  • viz. CustomerProfile; FileSystemProfile; ...
    – Kris
    May 9, 2012 at 15:53

I believe you are looking for abstraction.

  • Be careful with "abstraction" since this has a meaning in object-oriented programming languages which may not be appropriate here. An abstract class can never be instantiated. May 9, 2012 at 16:03
  • See my comment on my question about using abstraction. It's ambiguous in this context. May 9, 2012 at 16:05
  • Don't know how I missed that... Sorry.
    – rplst8
    May 14, 2012 at 16:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.