It is desirable to have SyntacticallyTransparentRefactorings. Typically, an object, function, or data value is defined in one place, and used in many other places. It is nice if, when refactoring, the definition can be changed, but all uses be left unchanged. This is "syntactically transparent": e.g. the user may not be able to tell how the object is implemented. One particular language feature supports syntactic transparency for refactorings in object-oriented programming languages: * SyntacticallyEquivalentMembersAndProperties. Impediments to SyntacticallyTransparentRefactorings: * RefactoringBetweenCompileTimeAndRunTimeOperations * Syntactic distinction between data members and functions. * SyntacticDistinctionBetweenMembersAndFreeFunctions ---- CategoryProgrammingLanguage